zoukankan      html  css  js  c++  java
  • Java集合学习--集合总结

    一、ArrayList与Vector

    ArrayList与Vector很多地方大同小异,Vector现在已经基本不再使用。具体的管理如下:
    1.ArrayList与Vector都实现了List接口,底层都是基于动态数组实现。

    2.ArrayList与Vector底层数组初始大小均为10。

    3.ArrayList非线程安全,Vector中方法都是synchronized方法,进行了同步处理。

    4.ArrayList扩容机制是扩大为原来的1.5倍,Vector扩容,默认扩大为原来的2倍。

    二、HashMap与HashTable

    1.均实现Map接口,底层主要数据接口是散列表,hash冲突的时候处理方式都是链表,但是HashMap在1.8后进行大量的优化,引入红黑树。

    2.HashMap的初始容量大小为16,加载因子为0.75,HashTable默认初始容量为11,默认加载因子为0.75
    Hashtable不要求底层数组的容量一定要为2的整数次幂,而HashMap则要求一定为2的整数次幂。

    3.Hashtable中key和value都不允许为null,而HashMap中key和value都允许为null

    4.HashMap的扩容机制是扩大为原来的2倍,HashTable扩大为原来的2倍+1;

    5.确定一个键值对在散列表中的位置,HashTable是 int hash = key.hashCode();int index = (hash & 0x7FFFFFFF) % tab.length;即将hash值转正值后进行length的取模
    HashMap是int hash = key.hashCode()) ^ (h >>> 16);int i = (n - 1) & hash

    三、ArrayList与LinkedList

    1.均实现List接口,都非线程安全。
    2.ArrayList实现RandomAccess接口,支持快速查找和二分查找,LinkedList实现Deque接口,可用作队列。
    3.底层实现不同,ArrayList主要是借助动态数组实现,LinkedList则是双向链表。
    4.ArrayList扩容,扩大为原来的1.5倍,LinkedList则不需要进行扩容,在内存足够的前提下,容量不限。
    5.对比与LinkedList,ArrayList的查找效率高,插入删除效率不足。

    四、HashMap,LinkedHashMap,TreeMap

    1.均实现Map接口,存储键值对。均非线程安全
    2.LinkedHashMap继承HashMap,具有HashMap的所有特性,同样允许key和value为null。底层实现主要是散列表,链表,红黑树;TreeMap主要是通过红黑树实现。
    3.HashMap是无序的,LinkedHashMap通过一个双向链表维护key-value的插入顺序,TreeMap默认是根据key的字典顺序升序排序。
    4.TreeMap的查询、插入、删除效率均没有HashMap高,一般只有要对key排序时才使用TreeMap
    5.TreeMap的key不能为null,而HashMap和LinkedHashMap的key可以为null。

    五、HashSet、LinkedHashSet和TreeSet

    1.Hashset的实现借助HashMap
    public HashSet() {
    map = new HashMap<>();
    }
    2.LinkedHashSet的底层实现是LinkedHashMap

    3.TreeSet的实现基于TreeMap
    public TreeSet() {
    this(new TreeMap<E,Object>());
    }
    set相当于是只存储了key的Map,理解了Map的相关实现类,set的相关实现类水到渠成。

  • 相关阅读:
    实习差不多一个月了
    多一个角度,多一分收获
    走出第一步
    .net中枚举enum的复习与实例
    瞧瞧UC浏览器对CSS样式的“关怀”
    关于cookie(基础)
    用ajax提交数据到ashx用JSON.stringify格式化参数后在服务器端取不到值?[转载至:http://q.cnblogs.com/q/34266/]
    [转载] SQL进行排序、分组、统计的10个新技巧
    css样式解决圆角等多种难解决的问题 (转载至:Lanny☆兰东才)
    让人想不通的突然button事件失灵了?(小心页面form表单嵌套)
  • 原文地址:https://www.cnblogs.com/liupiao/p/9372988.html
Copyright © 2011-2022 走看看