Collection集合总结
1.Collection集合
1.1 集合体系结构
- Collection集合概述
- 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
- JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
1.2 集合的常用方法
1.3 迭代器
Iterator iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到
迭代器是通过集合的iterator()方法得到的,所以我们说它是依赖于集合而存在的
IDEA快捷键:iter
*Iterator<E> iterator():
*返回此集合中元素的迭代器,通过集合iterator()方法得到
Iterator<String> it = c.iterator();
*用while循环改进元素的判断和获取
while (it.hasNext())
{ String s = it.next();
System.out.println(s);
}
1.4 集合使用步骤图解
new出来的对象 肯定是放在堆内存里。
list这个变量是放在栈内存里面
new出来的东西是在堆里面划分的空间
2.List集合
2.1 List集合概述
- 概念:
- 有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素
- 与Set集合不同,列表通常允许重复的元素
- 特点
- 有索引
- 可以存储重复元素
- 元素存取有序
2.2 方法
2.3 List迭代器ListIterator
2.4 增强for循环
for(元素数据类型 变量名 : 数组/集合对象名)
{ 循环体; }
实现以及内部原理:
2.5 ArrayList LinkedList
2.5.1 ArrayList
ArrayList集合
底层是数组结构实现,查询快、增删慢
2.5.2 LinkedList
LinkedList集合
底层是链表结构实现,查询慢、增删快
LinkedList 方法
4. Set集合
4.1 Set集合概述
- 特点:
- 元素存取无序
- 没有索引、只能通过迭代器或增强for循环遍历
- 不能存储重复元素
- Hash值
哈希值是对象所有或者指定内容根据一特定算法得到的值,java对象中继承自object类的equals方法就是默认比较哈希值的,两个不同地址的对象,如果哈希值相同,使用默认比较方法是会被认为相等,但是一个对象变化并不会引起另一个的反应。
4.2 HashSet
- HashSet特点
- 底层数据结构是哈希表
- 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
- 没有带索引的方法,所以不能使用普通for循环遍历
- 由于是Set集合,所以是不包含重复元素的集合
- 唯一性分析
- 根据对象的哈希值计算存储位置
如果当前位置没有元素则直接存入
如果当前位置有元素存在,则进入第二步- 当前元素的元素和已经存在的元素比较哈希值
如果哈希值不同,则将当前元素进行存储
如果哈希值相同,则进入第三步- 通过equals()方法比较两个元素的内容
如果内容不相同,则将当前元素进行存储
如果内容相同,则不存储当前元素
- 哈西表数据结构
4.3 LinkedHashSet
哈希表和链表实现的Set接口,具有可预测的迭代次序
由链表保证元素有序,也就是说元素的存储和取出顺序是一致的
由哈希表保证元素唯一,也就是说没有重复的元素
4.4 TreeSet
- 特点
TreeSet集合概述:
1.元素有序,可以按照一定的规则进行排序,具体排序方式取决于构造方法
2.TreeSet():根据其元素的自然排序进行排序
3.TreeSet(Comparator comparator) :根据指定的比较器进行排序
没有带索引的方法,所以不能使用普通for循环遍历
由于是Set集合,所以不包含重复元素的集合
- 自然排序Comparable接口
- 实现步骤
- 用TreeSet集合存储自定义对象,无参构造方法使用的是自然排序对元素进行排序的
- 自然排序,就是让元素所属的类实现Comparable接口,重写compareTo(T o)方法
- 重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写