Set:无序,不可重复|去重
无序: 存放的顺序与内部真实存储的顺序不一致
去重: 集合不包含元素对e1和e2 ,使得e1.equals(e2)和最多一个null元素。
新增功能: static <E> Set<E> of(E... elements) 返回包含任意数量元素的不可修改集。
遍历方式:
foreach
iterator迭代器
TreeSet
底层结构 : 红黑树
特点 : 查询效率较高,自动把数据做升序排序
底层是由TreeMap维护的
新增功能: 新增了一些与比较大小相关的方法
遍历方式 :
foreach
iterator迭代器
注意 : TreeSet需要存储相同类型的数据,因为会默认存在比较排序
TreeSet存储javabean类型的数据
去重与排序: 都是根据比较规则实现的,与equals没有关系
比较规则:
内部比较器|内部比较规则|自然排序 : 比较规则定义在javabean类型的内部
javabean类型实现Comparable接口,重写compareTo(T o)方法,在方法中定义比较规则
外部比较器|外部比较规则|定制排序 : 比较规则定义在javabean类型的外部
定义一个实现类,实现Comparator接口,重写int compare(T o1, T o2),在方法中定义比较规则
Arrays.sort(数组) 默认升序排序
static <T> void sort(T[] a, Comparator<? super T> c) 根据指定比较器引发的顺序对指定的对象数组进行排序。
HashSet
List 有序 可重复
Set 无序 不可重复
TreeSet : 默认升序排序
HashSet
底层结构: 哈希表(数组+链表+红黑树)
特点: 查询,增删效率高 ,去重,无序
底层是由HashMap维护的
遍历: foreach iterator迭代器
新增方法 : 无
此类允许null元素。
请注意,此实现不同步
去重 : 数据的类型要求重写hashCode与equals方法
Map
Map : 无序的,去重的
键值对数据的集合
键值对->映射关系
价值对: K-V
K键 : 无序的,去重的|唯一的 ---> Set
V值 : 无序的,可重复 ---> Collection
K-V可以为任意引用数据类型
特点:
一个key只能对应一个Value
key相同value覆盖
遍历方式:
1.values 获取所有键值对的值
Collection<V> values() 返回此映射中包含的值的Collection视图。
2.keySet 获取所有键值对的key,根据key获取value
Set<K> keySet() 返回此映射中包含的键的Set视图。
3.entrySet 获取所有的键值对,每一个键值对都是一个Entry类型->表示一个键值对
Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射的Set视图。
TeerMap
TreeMap :
底层: 红黑树
存储键值对类型的数据,自动升序排序,去重的
去重,排序: 根据键值对的key实现,与value本身无关
TreeSet底层是由TreeMap
请注意,此实现不同步。
去重|排序: 根据key的类型的比较规则
key的数据类型实现内部比较器
传递外部比较规则