二 Set (Set:注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素)
Set集合的子集合 HashSet 按照哈希算法来存取集合中的对象 存取速度比较快
当程序向HashSet中 add()的一个对象的时候, 先用hashCode方法计算出该对象的哈希码 哈希码不一致 添加 哈希码一致
不添加 相同对象不添加 然后用equals判断对象的属性是否一致 比较结果为false就添加 true就不添加 不同对象添加
HashSet
在用Set集合的时候我几乎用的都是HashSet,HashSet是使用Hash表实现的,集合里面的元素是无序得,可以有null值,但是不能有重复元素。
特点:因为相同的元素具有相同的hashCode,所以不能有重复元素
基本数据类型包装类/String 已经重写了hashCode 和 equals 会自动比较
自定义实现类要重写其hashCode和equals方法,规定自定义类的比较规则来排重.
LinkedHashSet 特点:
1.有序(存取一致)
是Set集合中唯一一个能保证怎么存就怎么取的集合对象
2.排重
3.底层是双向链表 HashSet的方法怎么用 LinkedHashSet就怎么用 TreeSet 二叉树 实现了SortedSet接口 能够对集合中对象进行排序
特点:
1.排序的(升序) 自然排序 根据ASCII表大小排序
2.排重
3.无序(存取不一致)
4.底层是一个二叉树(左序中序右序)
5.只能存储同一种类型 才能排序 不然就会出现转换异常 自定义实现类 如何比较
TreeSet
TreeSet是用二叉树结构实现的集合
特点:集合中的元素是有顺序得,不允许放入null,同样不能放入重复元素。
三、Map
Map接口中键和值一一映射. 可以通过键来获取值。
给定一个键和一个值,你可以将该值存储在一个Map对象. 之后,你可以通过键来访问对应的值。
当访问的值不存在的时候,方法就会抛出一个NoSuchElementException异常.
当对象的类型和Map里元素类型不兼容的时候,就会抛出一个 ClassCastException异常。
当在不允许使用Null对象的Map中使用Null对象,会抛出一个NullPointerException 异常。
当尝试修改一个只读的Map时,会抛出一个UnsupportedOperationException异常。
HashMap特点:
TreeMap特点:
TreeMap 特殊方法:
TreeMap是基于红黑树实现的;
HashMap 是基于是哈希值实现的;