1.集合分类
集合分为两大类,即单列集合Collection和双列集合Map.其中单列集合分为元素可重复集合List和元素不可重合集合Set
2.关于Collection常用的成员方法,可以简单概括为增1删2查3.
public class Demo06 {
public static void main(String[] args) {
List<String> arr = new ArrayList<>();
//增1
arr.add("zhangsan");
arr.add("lisi");
arr.add("wangwu");
arr.add("qianliu");
System.out.println(arr);
//删2
//删除指定元素
boolean result = arr.remove("zhangsan");//有返回值
System.out.println(result);
System.out.println(result);
//删除全部元素
arr.clear();//无返回值
System.out.println(arr);
//查3
arr.add("zhangsan");
arr.add("lisi");
arr.add("wangwu");
arr.add("qianliu");
System.out.println(arr);
//查指定元素
boolean result2 = arr.contains("zhangsan");
System.out.println(result2);
//查集合是否为空
boolean result3 = arr.isEmpty();
System.out.println(result3);
//查集合长度
int size = arr.size();
System.out.println(size);
}
}
3.list集合
3.1.list集合特点
- 有序
- 有索引
- 可重复
3.2.ArrayList底层原理
ArrayList的底层是数组,当new创建一个ArrayList时,底层会创建一个数组长度为0的数据,当我们调用add()方法时,底层会创建一个新的长度为10的数组,该数组名称为elementDate,此外还会创建一个size变量,该变量有两个含义,一是该变量的值永远等于即将要操作的索引,二是该变量值表示数组中有几个元素,也就是集合长度.当数组长度超过10后,底层会重新创建一个长度为15的数组,并将之前的元素从旧数组拷贝到新数组,即ArrayList集合的扩容因子为1.5.
3.3.LinkList底层原理
LinkList的底层是双向链表,当new一个LinkList时,会在堆中开辟一块内存,同时会维护两个变量,这两个变量一个记录头节点的地址值,一个会记录尾节点的地址值,当我们调用add方法时,会在堆中new出一个节点对象,注意在LinkList集合中,每一个节点都是在堆中new出来的,每个节点都有三部分,第一部分记录前一个节点的地址值,第二部分记录自己的值,第三部分会记录下一个节点的地址值.当我们的集合添加第一个元素时,头节点和尾节点都会记录该节点的地址值,紧接着,当添加第二个元素时,尾节点会更改并记录第二个节点的地址值,第一个节点的第三部分会记录第二个节点的地址值,第二个节点的第一部分会记录第一个节点的地址值,以此形成一个链表,也正是因为它是一个链表结构,所以导致它查询慢,增删快.