List
List接口常用方法
List集合存储元素特点:有序可重复
List既然是Collection接口的子接口,那么肯定List接口有自己的“特色”方法
以下列出List特有的常用的方法:
-
void add(int index, E element) 将指定的元素插入此列表中的指定位置(可选操作)。
-
Object get(int index)返回此列表中指定位置的元素。
-
int indexOf(Object o) 返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
-
int lastIndexOf(Object o) 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。
-
Object remove(int index) 删除该列表中指定位置的元素(可选操作)。
-
Object set(int index, E element) 用指定的元素(可选操作)替换此列表中指定位置的元素。
import java.util.*;
/*
* 测试List接口中常用的方法、
* LIst集合存储元素特点:有序可重复
void add(int index, E element) 将指定的元素插入此列表中的指定位置(可选操作)。
Object get(int index)返回此列表中指定位置的元素。
int indexOf(Object o) 返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
int lastIndexOf(Object o) 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。
Object remove(int index) 删除该列表中指定位置的元素(可选操作)。
Object set(int index, E element) 用指定的元素(可选操作)替换此列表中指定位置的元素。
* */
public class ListTest01 {
public static void main(String[] args) {
//创建List类型的集合
// List myList = new LinkedList();
// List myList = new Vector();
List myList = new ArrayList();
myList.add("A");
myList.add("B");
myList.add("C");
myList.add("D");
// 在列表指定位置插入元素
// 这个方法使用的不多,对于ArrayList来说效率比较低
myList.add(1,"king");
Iterator it = myList.iterator();
while(it.hasNext()){
Object elt = it.next();
System.out.println(elt);
}
//根据下表获取元素
Object firstObj = myList.get(0);
System.out.println(firstObj);
// 通过下标遍历 [List集合特有的方式,Set没有]
for (int i = 0; i < myList.size(); i++) {
Object obj = myList.get(i);
System.out.println(obj);
}
}
}
ArrayList
- ArrayList集合初始化容量是10
- ArrayList集合底层是Object类型的数组 Object []
- ArrayList集合的扩容:原容量的1.5倍
- ArrayList底层是数组,怎么优化?
尽可能少的扩容,因为数组扩容的效率比较低,建议在使用ArrayList集合的时候,预估元素的个数,给定一个初始化容量 - 数组的优点:检索效率比较高(每个元素占用空间大小相同,内存地址是连续的 ,知道首元素的内存地址,知道下标,我们就可以计算元素的内存地址,所以检索效率最高)
- 数组的缺点:随机增删效率比较低,很难存储大数据量(很难找到一块非常巨大的连续的内存空间)
- 向数组末尾添加元素效率还是比较高的
- 面试官经常问的一个问题: 这么多集合中,你使用的哪个数组最多?
ArrayList集合,因为往数组末尾添加元素,效率不受影响,另外我们检索/查找某个元素的操作比较多
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
/*
*ArrayList集合的扩容:原容量的1.5倍
* ArrayList底层是数组,怎么优化?
* 尽可能少的扩容,因为数组扩容的效率比较低,建议在使用ArrayList集合的时候,预估元素的个数,给定一个初始化容量
* 数组的优点:检索效率比较高(每个元素占用空间大小相同,内存地址是连续的 ,知道首元素的内存地址,知道下标,我们就可以计算元素的内存地址,所以检索效率最高)
* 数组的缺点:随机增删效率比较低,很难存储大数据量(很难找到一块非常巨大的连续的内存空间)
* 向数组末尾添加元素效率还是比较高的
* 面试官经常问的一个问题: 这么多集合中,你使用的哪个数组最多?
* ArrayList集合,因为往数组末尾添加元素,效率不受影响,另外我们检索/查找某个元素的操作比较多
* */
public class ArrayListTest01 {
public static void main(String[] args) {
//默认初始化容量是10 (底层先创建了一个长度为0的数组,当添加第一个元素的时候,初始化容量是10)
//数组的长度是10
List list1 = new ArrayList();
//集合的size()方法是获得当前集合中元素的个数,不是获取集合的容量。
System.out.println(list1.size()); //0
List list2 = new ArrayList(20);
System.out.println(list2.size()); //0
list1.add(1);
list1.add(1);
list1.add(1);
list1.add(1);
list1.add(1);
list1.add(1);
list1.add(1);
list1.add(1);
list1.add(1);
list1.add(1);
System.out.println(list1.size());
//再加一个元素
list1.add(10);
//新的容量增长1.5倍
System.out.println(list1);
//创建一个HashSet集合
Collection c = new HashSet();
c.add(100);
c.add(50);
c.add(66);
c.add(610);
c.add(100);
//通过这个构造方法就可以将HashSet集合转化为ArrayList集合。
List myList3 = new ArrayList(c);
for (int i = 0; i < myList3.size(); i++) {
System.out.println(myList3.get(i));
}
}
}
标签:元素,Java,list1,ArrayList,Object,List,add
From: https://www.cnblogs.com/shijili/p/18002999