2021.03.14
第33次记录
课堂笔记:
ArrayList集合:
1.默认初始容量为10(底层先创建一个长度为0的数组,当添加第一个元素的时候,初始化容量10)
2.集合底层是一个Object[]数组
3.构造方法:
new ArrayList();
4.ArrayList集合的扩容:
增长到原容量的1.5倍。
ArrayList底层是数组,怎么优化?
尽可能少的扩容。因为数组扩容效率比较低,建议使用ArrayList集合
的时候预估元素个数,给定一个初始化容量。
5.数组的优点:
检索效率比较高。
6.数组的缺点:
随机增删元素的效率比较低;
数组无法存储大数据量;
7.需要注意的是:向数组末尾添加元素,效率还是很高的。
代码演示:
public class ArrayListTest01 {
public static void main(String[] args) {
List list1 = new ArrayList();
System.out.println(list1.size());
List list2 = new ArrayList(20);
System.out.println(list2.size());
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(5);
list1.add(6);
list1.add(7);
list1.add(8);
list1.add(9);
list1.add(10);
System.out.println(list1.size());
list1.add(11);
System.out.println(list1.size());
}
}
输出结果:
0
0
10
11
代码演示2:
//ArrayList集合的构造方法
public class ArrayListTest02 {
public static void main(String[] args) {
List list1 = new ArrayList();
List list2 = new ArrayList(100);
Collection c = new HashSet();
c.add(100);
c.add(900);
c.add(50);
List list3 = new ArrayList(c);
for (int i = 0; i < list3.size(); i++) {
System.out.println(list3.get(i));
}
}
}
输出结果:
50
100
900
代码演示3:
public class ListText01 {
public static void main(String[] args) {
//创建List类型的集合
List myList = new ArrayList();
//添加元素
myList.add("A");
myList.add("B");
myList.add("C");
myList.add("C");
myList.add("D");
//这个方法使用不多,因为对于ArrayList来说效率比较低
myList.add(4, "king");
myList.add(5, "GAME");
//迭代
Iterator it = myList.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println("----------");
//根据下标获取元素
Object firstObj = myList.get(0);
System.out.println(firstObj);
System.out.println("----------");
//因为有下标,所以List集合有自己特殊的遍历方式
//通过下标遍历
for (int i = 0; i < myList.size(); i++) {
Object obj = myList.get(i);
System.out.println(obj);
}
System.out.println("----------");
//获取指定对象第一次出现处的索引
System.out.println(myList.indexOf("GAME"));
System.out.println("----------");
//获取指定对象最后一次出现处的索引
System.out.println(myList.lastIndexOf("C"));
System.out.println("----------");
//删除指定下标位置的元素。删除下标为0的元素
System.out.println(myList.remove(0));
System.out.println(myList.size());
//修改指定位置的元素
System.out.println("----------");
for (int i = 0; i < myList.size(); i++) {
Object obj = myList.get(i);
System.out.println(obj);
}
System.out.println("----------");
myList.set(1, "Hello");
for (int i = 0; i < myList.size(); i++) {
Object obj = myList.get(i);
System.out.println(obj);
}
}
}
输出结果:
A
B
C
C
king
GAME
D
----------
A
----------
A
B
C
C
king
GAME
D
----------
5
----------
3
----------
A
6
----------
B
C
C
king
GAME
D
----------
B
Hello
C
king
GAME
D