笔记
- 复习
- LinkedHashSet: 有序, 唯一 双重链 header维护次序
HashSet : 无序 唯一
1.创建对象:
LinkedHashSet() |
LinkedHashSet(Collection<? extends E> c) |
LinkedHashSet(int initialCapacity) |
LinkedHashSet(int initialCapacity, float loadFactor) |
计算 扩容的时候: 容量*加载因子 = 16*.75 =12
初始容量 = 2 的次方
- Map接口
存放的就是一组 key-value 的键值对
要求: key 必须唯一, value 可能重复
常用的类: HashMap, HashTable, TreeMap…
HashTable: 线程安全, key不能为null
HashMap: x线程不安全, key可以是null, value可以是null
- 构造方法:
HashMap() |
HashMap(int initialCapacity) |
HashMap(int initialCapacity, float loadFactor) |
HashMap(Map<? extends K,? extends V> m) |
HashMap的原理:
如果添加一个元素, key为null, k-v 放在table[]第一个位置
常用方法:
添加元素: put(k,v), 如果key不存在, 就添加, 如果key存在, 新添加的元素覆盖已有的元素
删除: remove(k) 通过key删除
查询: 值 get(key) 通过key获取指定key的值
size() 获取map包含多个对key-value
clear() 清空
isEmpty() 判断map是否是空
Set keySet( )获取所有key
Conllection values() 获取所有的value
containsKey(key) 判断key是否存在
containsValue(value) 判断value是否存在
TreeMap: 对key的排序, 如果key是自定义类型, 需要对key 添加比较器
TreeMap<Student, Integer>
3.泛型 <数据类型, 通配符>
1.声明一个泛型类
public class 类名<T>{}
表示T可以在类的普通方法, 参数, 返回值使用
如果该类有static修饰的方法, 类定义的泛型不能使用
需要时static后面使用<泛型名>声明泛型
public static <E> void fun2(E ele){ } |
泛型的好处:
- 限制添加的元素的类型
- 避免我们强制类型转换, 避免的出现ClassCastException的异常
注意: 泛型 不能使用基本类型