三.Set接口(唯一,无序)
3.1 HashSet实现类
简要底层原理:数组+链表 = 哈希表
1.集合中存入的数据(比如Integer,String)
2.调用对应的hashCode方法计算哈希值
3.通过哈希和一个表达式计算在数组中存放的位置
4.存放数据如果不是自定义类型数据,有重复数据,只会显示一个,如果是自定义类型数据,则需要重写hashCode 和 equals方法。
3.2 TreeSet实现类(唯一,无序:没有按照输入顺序进行输出,有序:按照升序进行遍历)
底层:二叉树(逻辑结构)
在树中放入数据的时候,最重要的事就是比较(实现Comparable内部比较器或者外部比较器)
当放入自定义类型数据时,需要实现Comparable接口,重写compareTo方法。
TreeSet在进行遍历的时候得到升序的结果:
二叉树遍历:使用中序遍历。左根右
四.Map接口(一对一对的存储)无序,唯一
常用方法:增加:put(K key, V value)
删除:clear() , remove(Object key)
查看:entrySet()[对集合中所有的key,value进行遍历查看]
get(Object key)
keySet()[对集合中所有的key进行遍历查看]
size()
values()[对集合中所有的value进行遍历查看]
判断:containsKey(Object key) containsValue(Object value)
equals(Object o) isEmpty()
4.1 HashMap实现类
特点:无序,唯一 特点是按照key进行总结的,因为底层key遵照哈希表的结构(数组+链表)
4.2 TreeMap实现类(唯一,有序,按照升序或者降序)
原理:二叉树,key遵照二叉树特点,放入集合的key的数据对应的类型内部一定要实现比较器。