集合框架: 线性表
List 数组 和 链表的实现接口
Queue: 单向队列
Deque: 双向队列
Set接口:
1)HashSet:
底层实现: HashMap ,HashMap底层是用什么实现的哈希表(散列表)
使用HashSet前提:
1.存储String ,Integer ,因为他们重写了 hashCode 和 equals
2.自定义对象: 必须 重写 hashCode 和 equals
2)TreeSet: 为了 排序
有序的set集合:
使用TreeSet 集合的前提是 必须 实现Comparable接口
Comparable 和 Comparator
Comparator自定义比较器: 我们可以创建多个 比较规则
或使用匿名内部类 完成,这样跟灵活,实现这个接口后
必须重写 compare(Object o1, Object o2)方法
Comparable: 是让当前类具有可以比较的能力,
重写compareTo(Object o1)方法 ,污染当前比较类
Set set = new TreeSet(new Comparator(){
@Override
public int compare(Object o1,Object o2){
}
});
public class Student implements Comparable<Student>{
}
-----------------------------------------------------
}
----------------------------------------------------
Map集合:
存储方式 使用 键值对儿 存储的
key - value
HashMap:
特点:key 是 不允许重复的 ,而且value 会被 覆盖掉
无序的
map在存储时 是根据 key 来判断的,跟value 无关
常用方法:
1.clear();
2.put(key,value); 向map 集合添加元素
3.containsKey(); 判断是否包含 键
4.containsValue(); 判断是否包含 值
5.String remove(Object obj);
6.boolean remove(Object obj,Object value);
7.V replace(K key, V value);
8.boolean replace(K key, V oldValue, V newValue);
9.size(); 返回map 集合中元素的个数
10.isEmpty(); 判断是否为 空
*** 11.entrySet(); 遍历 整个 map 集合
要同时获取 key 和 value
12.values(); 只获取 map 集合中的所有value 值
13.keySet(); 只获取 map 集合中的所有key 值
14.get(Object key); 根据键 找 值
TreeMap:
这是有序的map 集合 但是,这个排序 是根据 key 值排序的,
如果存储String ,Integer 类型 根本不需要我们考虑其他的
但是如果存储自定义对象时 ,并且 自定义对象 还做了 key值 ,就必须实现 比较器
但是这么做有没有什么意思; 如果自定义对象做了 value 值,排序规则
是根据key来定义的,跟 value 没关系
**** TreeMap 的key 是不允许存储 null 值的
因为 需要根据key 来排序
Hashtable:
是线程安全的, 性能慢, 采用的是 独占锁
Hashtable中 的键和值 都不可以 存储null 值
Enumration elements();
Enumration keys();
================================================
高并发的场景:
选择线程安全的 容器;
Hashtable : 性能慢
jdk1.5 : 并发包 concurrent。
java.util.concurrent.concurrentHashMap :synchroized
分段锁机制