一、 回顾
1.Set集合特点:无序 没有索引 唯一重复
2.遍历方式: A.使用迭代器 B.使用增强for循环
3.hashCode值
A.hashcode值根据内存地址生成的一个十进制的整数
B.不是根据hashcode值来判断两个对象是同一个对象 hashcode 是可以重写
C.public int hashCode() 返回该对象的哈希码值
D.字符串重写了hashcode方法 如果两个字符串的内容相同 hash是一样 但是字符串会 出现hash冲突的问题:内容不相同但是hashcode值一样(重地 通话)
4.数据结构红黑树:趋近于平衡二叉树 查询效率快
5.HashSet的数据结构:hash表结构 在jdk1.8之前 数组+链表 在jdk1.8之后 数组+链表+红黑树
6.HashSet 存储数据唯一的原因:使用equlas() 与hashcode方法进行验证 hashcode值一样 内容也一样 是不存
7.TreeSet 排序
排序规则:
A.数值是按照升序进行排列
B.字符串是按照首字母的ascamll表来进行排列
C.引用数据类型 没有进行默认排列 需要执行其规则
自定义的引用数据类型
A.自定义的类实现 Comparable
this > 0 升序
this =0 表示是相同
this < 0降序
B.实例化解集合的时候传递比较的规则 Comparator
7.LinkedHashSet
A.具有可预知迭代顺序的 Set 接口
B.哈希表
C.双重链表
8.Map
A.概念:以键值对存储的集合 数据结构只针对与键 键是唯一
B.常用的方法
C.map集合两种遍历方式
a.获取的键 通过键来获取值
b.将键值对封装成一个对象 调用对象的方法 getKey() getValue()
二、作业1
step01 需求
step02 代码
//定义数组
String [] arrays={"王昭君","王昭君","西施","貂蝉","杨玉环"};
//实例化集合
LinkedHashSet link = new LinkedHashSet();
//使用增强for循环
for (String array : arrays) {
link.add(array);
}
//使用迭代器遍历
Iterator iterator = link.iterator();
while (iterator.hasNext()){
Object next = iterator.next();
System.out.println(next);
}
王昭君
西施
貂蝉
杨玉环
三 作业2
step01 需求
step01 代码
public static void main(String[] args) {
String[] array1 = new java.lang.String[]{"黑龙江","浙江省","江西省","广东省","福建省"};
String[] array2 = new java.lang.String[]{"哈尔滨","杭州","南昌","广州","福州"};
Map map = new HashMap();
for (int i = 0; i < array2.length; i++) {
map.put(array1[i],array2[i]);
}
System.out.println(map);
}
{黑龙江=哈尔滨, 福建省=福州, 浙江省=杭州, 江西省=南昌, 广东省=广州}
七、HashMap
7.1简介
1.特点:
- 数据结构基于哈希表
- 此类不保证映射的顺序 无序
- 并允许使用null值和null键