Java集合的区别和选择

1.List      有序,可重复

               ArrayList:底层数据结构是数组,查询快,增删慢。线程不安全,效率高

               Vector:底层数据结构是数组,查询快,增删慢。线程安全,效率低

               LinkedList:底层数据结构是链表,查询慢,增删快。线程不安全,效率高

2.Set       唯一(Set判断两个对象相同是根据equals方法)

               HashSet:底层数据结构是哈希表。 无序唯一,如何保证元素唯一性的呢?依赖两个方法:hashCode()和equals()开发中自动生成这两个方法即可

               LinkedHashSet:底层数据结构是链表+哈希表,有序(插入顺序)唯一,由链表保证元素有序,由哈希表保证元素唯一

               TreeSet:底层数据结构是红黑树。有序(元素升序)唯一,如何保证元素排序的呢?自然排序比较器排序 如何保证元素唯一性的呢?根据比较的返回值是否是0来决定

3.Map      键值对

               HashMap:底层是哈希表数据结构,无序,最多只允许一条记录的键为Null;允许多条记录的值为 Null,线程不安全

               Hashtable:不允许记录的键或者值为空,线程安全

               LinkedHashMap:按照记录的插入顺序,

               TreeMap:底层是二叉树数据结,按照键排序,默认是按键值的升序排序,线程不安全

//排序
Iterator it = hsMap.entrySet().iterator();  
while (it.hasNext()) {  
Map.Entry e = (Map.Entry) it.next();  
System.out.println("Key: " + e.getKey() + "--Value: "  
+ e.getValue());  
}  

 keySet是键的集合,Set里面的类型即key的类型

entrySet是 键-值 对的集合,Set里面的类型是Map.Entry

使用entrySet则必须将map对象转换为Map.Entry,keySet则不需要

 

 

posted @ 2017-04-08 21:34  corolcorona  阅读(170)  评论(0编辑  收藏  举报