集合中2个根接口 Collection 和 Map
Collection 接口
- 是List、Set和Queue接口的父接口
- 定义了可用于操作List、Set和Queue的方法----增删改查
-
List 排列有序可重复 序列 常用实现类ArrayList 数组序列
Queue 排列有序可重复 队列 常用实现类LinkedList 链表,同事也是List的实现类
Set 无序不可重复可以添加空对象 集 set有个实现类是HashSet哈希值
Map接口
map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,快速个根据key查找value
map中的键值对以Entry类型的对象实例形式存在
key值不可重复,value可重复
1.HashMap
线程不安全,所以性能高,可以通过继承collection来调用方法实现线程安全。
2.Hashtable
线程安全
Hashtable n = new Hashtable();
n.put("thre", new Integer(3));
n.put("for", ”00“);
3.concurrentHashMap 相当于把一个hashmap分成多个,然后每个部分分配一把锁,这样就可以支持多线程访问。
线程安全的,在多线程下效率更高。
HashMap效率高,但是在多线程环境下线程不安全
HashTable线程安全,但是效率低,因为HashTable内部是采用synchronized来保证线程安全的,每次同步执行的时候要锁住整个结构,但是在线程竞争激烈的情况下HashTable的效率下降得很快
ConcurrentHashMap采用锁分段的技术,它对数据集进行分段,每段竞争一把锁,不同数据段的数据不存在锁竞争,从而有效提高了并发访问效率;可以理解为把一个大的Map拆分为N个小的HashTable,在put或者get的时候,根据key.hashCode()来决定把key放在哪一个HashTable中,在源码中一个小的HashTable就是一个Segment
总的来说,ConcurrentHashMap就是一个线程安全的HashMap