集合 - 图1
image.png

Collection 和 Iterator

Collection

Collection 是 List 和 Set 的父接口
Collection中的主要方法
image.png
image.png
image.png

Iterator

Iterator是迭代接口,通过此接口可以遍历集合中的数据
Iterator的主要方法
image.png

List

List集合存储的元素有序且可以重复,存进去和取出来的元素顺序相同。
集合 - 图7

Set

Set集合存储元素无序不可重复,存进去的元素和取出来的元素顺序是不一样的。
集合 - 图8

HashSet

当向HashSet中插入数据时,会调用对象的 hashCode 得到该对象的哈希码,然后根据哈希码计算出该对象插入到集合中的位置。

对于Java来说:
两个对象 equals 相等,那么它的 hashcode 相等
两个对象 equals 不相等,那么它的 hashcode 并不要求它不相等,但一般建议不相等
hashcode 相等不代表两个对象相等(采用 equals 比较)
所以,向HashSet、HashMap中加入数据时,要同时覆盖/重写equals方法和hashCode方法。

TreeSet

TreeSet可以对基本类型的包装类和String类型进行排序,因为它们都有实现Comparable接口
而其他的数据类型没有,所以其他的数据类型要想实现排序的效果,要实现Comparable 接口,并实现compareTo方法,在该方法中编写比较规则。还可以通过实现Comparator接口来实现排序,通过自己编写一个比较器类实现Comparator接口,然后编写一个compare方法,在该方法中编写比较规则即可。

Map

Map 中可以放置键值对,也就是每一个元素都包含键对象和值对象,即以key和value的形式存储,key部分无序不可重复,key部分相当于一个Set集合。
集合 - 图9

Map集合的循环遍历
第一种方式:
通过KeySet()方法获取key,然后获取迭代器,通过迭代器遍历获得每一个key,再通过.get(key)获取value值

第二种方式:
通过将Map集合转换为Set集合,转换后的Set集合中每个元素都是Map.Entry对象,而每个Entry对象都有key和value,可以通过getKey()和getValue()来获取

HashMap

HashMap 对键对象的存取和 HashSet 一样,仍然采用的是哈希算法,所以如果使用自定类作为 Map 的键对象,必须复写 equals 和 hashCode 方法。

TreeMap
TreeMap集合可以对Map中的key进行排序,如果Map中的key是自定义类型的那么需要实现Comaprable 或 Comparator 接口完成排序

Collections工具类
Collections 位于 java.util 包中,提供了一系列实用的方法,如:对集合排序,对集合中的内容查找等