Java中的集合
集合均实现了Collection根接口
1. list接口(有序,可重复):子类ArrayList(非同步、线程不安全)和Vector(同步、线程安全);
(ArrayList(基于动态数组)与LinkedList(基于链表)在使用上相同,删改用后者)
2. set接口(无序,不能重复):子类HashSet(无序)和TreeSet(有序,二叉树排序)
Map集合
1. HashMap(key只能返回一个Null,随机,非同步,线程不安全)
2. HashTable(同步、线程安全)
3. conCurrentHashMap(线程安全、锁分离):
相对于hashMap:
(1) 线程安全的;
(2) 在并发下无需家额外的同步;
(3) 多线程环境下优于hashMap
(4) 用于缓存;
相对于hashTable:
(1) hashTable是在所有方法前加sychronized关键字来实现线程安全的(效率低下)
(2) conCurrentHashMap实现了锁分离,允许16个线程读和写,有需要才上锁哪一段。
4. LinkedHashMap(记录插入的顺序)
5. TreeMap(根据键key排序)
6. 遍历两种方式:
1)keySet(){ Iterator it = map.keySet().iterator();
while(it.hasNext()){
Object key = it.next();
System.out.println(map.get(key));}}
2)entrySet() (推荐,效率高)
{ Iterator it = map.entrySet().iterator();
while(it.hasNext()){
Entry e =(Entry) it.next();
System.out.println("键"+e.getKey () + "的值为" + e.getValue());}}