List :有序的,可重复的 新增了一些根据索引操作的方法 ArrayList Vector LinkedList Set : 无序的 不可重复 新增功能: static <E> Set<E> of(E... elements) 返回包含任意数量元素的不可修改集。 其他方法从Collection继承 遍历方式: foreach iterator 注意: 存放数据的顺序与内部真实存储的顺序可能不一致
HashSet --> 是由HashMap维护的
无序的,不可重复
底层结构: 哈希表(数组+链表+红黑树)
特点: 查询,增删效率较高
无序,去重
应用场景 : 存储数据由单个值决定的情况下,想要去重的情况下,适合使用HashSet
新增内容 : 无新增方法
练习: 定义一个HashSet集合,存储自定义引用数据类型数据,是否对象根据成员内容去重
哈希表中hashcode与equals之间的关系(前提是重写hashcode与equals都是根据成员变量计算)
equals相等hashcode一定相等
hashcode相等,equals不一定相等
哈希表存储自定义引用数据类型数据的去重:
需要在数据的类型中重写hashcode与equals方法,实现根据内容(成员变量的值)进行比较和计算
TreeSet --> 是由TreeMap维护的
无序,去重
底层结构 : 红黑树(平衡二叉树)
特点 : 默认升序排序
新增方法 : 数据的大小比较相关的方法,因为红黑树结构中数据已经比较过大小,默认升序
思考: TreeSet集合中能够成功存储不同类型的数据?
使用TreeSet存储自定义的引用数据类型,如何是否去重(根据内容去重),实现默认升序排序?
思考: TreeSet集合中能够成功存储不同类型的数据?
使用TreeSet存储自定义的引用数据类型,如何是否去重(根据内容去重),实现默认升序排序?
ClassCastException : 类型转换异常
问题: 在存储自定义引用数据类型数据的时候,对象数据不确定比较规则,在TreeSet无法实现比较,无法排序
需要: 指定学生数据的比较规则
内部比较规则|内部比较器|自然排序
实现一个java.lang.Comparable接口,重写compareTo方法,在compareTo方法内部指定比较规则
定义在类的内部,是一种默认的比较规则
外部比较规则|外部比较器|定制排序
实现内部比较器: 定义一个TreeSet集合存储学生信息,要求根据学生姓名进行排序,实现根据姓名降序排序
学生类
Map <K,V>
存储键值对数据
元素的集合,键值对的集合
K-V 键值对
key,value可以为任意引用数据类型的数据
key--> 唯一的,无序的 --> Set集合
value --> 无序的,可重复的 -->Collection
键值对为一个映射关系
key--> 映射-->value
一个key只能对应一个value
一个key可以实现对应一个集合作为value,集合中可以存放多个值
Map集合的遍历方式:
1.keySet() 获取集合中所有的key,然后遍历key,根据key获取value
2.values() 获取集合中所有的value
3.entrySet() 返回多个Map.Entry类型的键值对对象,一个set集合
HashMap 底层: 哈希表(数组+链表+红黑树) 特点: 查询,增删效率较高 新增方法: 无新增方法 遍历方式: 与map相同 并允许null值和null键 DEFAULT_LOAD_FACTOR : 默认的加载因子 0.75 DEFAULT_INITIAL_CAPACITY : 默认初始容量 1<<4 = 16 threshold 扩容临界值 | 阀值 CAPACITY*LOAD_FACTOR 扩容: newCap = oldCap << 1 每次扩容原数组容量的2倍 练习: 定义一个HashMap结构,用来存储指定类型的数据,要求存储key为Teacher,value为Teacher所教授的学科 去重: key中存储数据的类型要求重写hashcode与equals方法
练习: 定义一个HashMap结构,用来存储指定类型的数据,要求存储key为Teacher,value为Teacher所教授的学科
TreeMap 根据key实现去重 底层结构: 红黑树 特点: 根据key对数据做升序排序 新增功能: 比较相关的一些方法 根据key做去重,根据key做排序 要求: key指定比较规则|方式|比较器|排序 内部比较器 外部比较器 定义TreeMap存储键值对数据,key为Teacher
Properties : 存储的键值对都是字符串 Properties可以保存到流中或从流中加载。 软编码 : 经常改动的内容不要定义在源代码中,定义在一个外部的文件中-->配置文件,从程序中每次动态从文件中进行读取内容,使用读入的最新内容 配置文件 : properties格式,符合Properties特点: 键值对 都是字符串
创建 db.properties
哈希表
HashMap哈希表