- Set和Map都是元素无序且不能重复的集合。去重的实现机制是通过在每次添加元素(值)的时候,都会把前面的元素和新增的元素进行比较,如果是true,表示重复,丢弃;false:添加到集合当中。
- set,map集合取数方式:
(1)迭代器:Iterator接口;
(2)foreach循环:(加强版for循环,遍历(从第一个位置到最后一个位置))
语法:
for(每一次遍历接收的对象声明: 需要被遍历的集合或数组){
代码块;
} - HashSet : 实现了Set接口,由哈希表支持。添加元素时调用Set的add方法, 首先调用对象本身的hashCode方法,获取这个对象的哈希值,如果值不相等则直接存储对象,反之调用对象的equals方法,比较前面对象的值和后面的是否相等,如果相等的丢弃该对象,反之使用链式结构存储hashCode相等而equals结果值不等的对象。此类存储非同步,允许使用 null 。
- TreeSet :是根据二叉树的结构进行自然顺序排序(大小排序)的集合;
排序规则定义有:
(1)自定义规则 :自己实现Comparator接口独立写一个排序规则;
(2)本身需要排序的对象来实现 Comparable接口,完成排序规则; - HashMap : 基于哈希表的 Map 接口的实现。此类存储非同步,存储的是键(key)值(value)对,其中key不可重复,value可重复,并允许使用 null 值和 null 键,但最多只允许1个null键。添加元素时调用Map的put方法。
- TreeMap: 基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。