集合-List-new ArrayList
一、List集合存储元素特点:
- 有序可重复; 有序:List集合中的元素有下标,从0开始,以1递增。可重复:存储一个1,还可以再存储1.
二、List集合常用方法:
- 1、List是Collection接口的子接口,肯定List接口有自己“特色”的方法:
- List接口特有的常用的方法:
- void add(int index, Object element) 在集合末尾添加元素
- Object set(int index, Object element) 修改指定位置的元素
- Object get(int index) 获取指定位置元素
- int indexOf(Object o) 获取指定对象第一次出现的位置
- int lastIndexOf(Object o) 获取指定对象最后一次出现的位置
- Object remove(int index) 删除指定下标元素
三、ArrayList 集合:
- 1、默认初始化容量10(底层先创建了一个长度为0的数组,当添加第一个元素的时候,初始化容量10。)
- 2、集合底层是一个Object[]数组。ArrayList集合是非线程安全的。
- 3、构造方法:默认初始化容量new ArrayList(); 初始化容量指定一个值:new ArrayList(20);
- 4、ArrayList集合的扩容:增长到原容量的1.5倍。
- 5、数组优点: 检索效率比较高。(每个元素占用空间大小相同,内存地址是连续的,元素又有下标,通过数学表达式计算出元素的内存地址,所以检索效率最高。)
- 6、数组缺点:机增删元素效率比较低;另外数组无法存储大数据量。(很难找到一块非常巨大的连续的内存空间。)
- 7、向数组末尾添加元素,效率很高,不受影响。
- 8、这么多的集合中,用哪个集合最多?ArrayList集合使用最多,因为往数组末尾添加元素,效率不受影响。另外,我们检索/查找某个元素的操作比较多。
- 9、ArrayList集合底层是数组优化:尽可能少的扩容。因为数组扩容效率比较低,在使用ArrayList集合 的时候预估计元素的个数,给定一个初始化容量。
List 集合 接口方法测试:
public class ListTest01 { public static void main(String[] args) { // 创建List类型的集合。 List myList = new ArrayList(); // 添加元素 myList.add("A"); // 默认都是向集合末尾添加元素。 myList.add("B");//在列表的指定位置插入指定元素(第一个参数是下标) // 这个方法使用不多,因为对于ArrayList集合来说效率比较低。 myList.add(1, "KING");// 根据下标获取元素 Object firstObj = myList.get(0); System.out.println(firstObj); // 因为有下标,所以List集合有自己比较特殊的遍历方式 // 通过下标遍历。【List集合特有的方式,Set没有。】 for(int i = 0; i < myList.size(); i++){ Object obj = myList.get(i); System.out.println(obj); } // 获取指定对象第一次出现处的索引。 System.out.println(myList.indexOf("C")); // 3 // 获取指定对象最后一次出现处的索引。 System.out.println(myList.lastIndexOf("C")); // 4 // 删除指定下标位置的元素 // 删除下标为0的元素 myList.remove(0); System.out.println(myList.size()); // 5
// 修改指定位置的元素 myList.set(2, "Soft");// 遍历集合 for(int i = 0; i < myList.size(); i++){ Object obj = myList.get(i); System.out.println(obj); } } }
new ArrayList :集合方法:
size(); 获取当前集合元素个数;并不是集合的容量
ArrayList(Collection<?extends E> c) 里面可以构造一个集合
/* 集合ArrayList的构造方法 */ public class ArrayListTest02 { public static void main(String[] args) { // 默认初始化容量10 List myList1 = new ArrayList();
// 集合的size()方法是获取当前集合中元素的个数。不是获取集合的容量。
System.out.println(list1.size()); // 0
// 创建一个HashSet集合 Collection c = new HashSet(); // 添加元素到Set集合 c.add(100); c.add(200); // 通过这个构造方法就可以将HashSet集合转换成List集合。 List myList3 = new ArrayList(c); for(int i = 0; i < myList3.size(); i++){ System.out.println(myList3.get(i)); } } }