Day15 集合、List、Set
1. 集合
2. 1.1 是什么
1.2 继承体系
Java的集合类主要由两个接口派生而出:Collection和Map。Collection和Map是Java结合框架的根接口,这两个接口又包含了一些子接口或实现类。
由以上两图我们可以看出Java集合类有清晰的继承关系,有很多子接口和实现类。但是,并不是所有子接口或实现类都是最常用的。
下面我们列举出最常用的几个子接口和实现类:
Collection ——> List ——> ArrayList类
Collection ——> List ——> LinkedList类
Collection ——> Set ——> HashSet类
Collection ——> Set ——> SortedSet接口 ——> TreeSet类
Map ——> HashMap类
Map ——> SortedMap ——> TreeMap类
1.3 Collection
Collection接口是List接口和Set接口的父接口,它定义的方法可以用于操作List集合和Set集合。
Collection接口定义的方法
1.4 Iterator
1.5 注意
使用contains和remove的时候 如果是自定义类型,需要根据需求覆写equals方法
因为这两个方法底层都会去自动调用对象的 equals方法来进行对象的比较
1.6 List
1.6.1 特性
有序,可重复
有指定下标,添加顺序和取出顺序一致
ArrayList : 底层是个Object[] 数组,随机查询效率高,随机删除效率低,默认初始化时10,扩大之后是原来的1.5倍,并且是第一次添加数据的时候进行默认长度设置,只new的时候,不添加数据,则长度为0, 等于是 Object[] elementData= {}; 长度为0
LinkedList : 底层是双向链表,随机查询效率低,随机删除效率高
Vector : 已经过时,属于线程安全,而ArrayList是Vector的升级版 , 默认初始化是10,扩大之后是原来的2倍
1.6.2 ArrayList
1.6.3 LinkedList
1.6.4 底层实现
1.6.4.1 节点类
1.6.4.2 添加
1.6.4.3 get
1.6.4.4 删除