码迷,mamicode.com
首页 > 编程语言 > 详细

Java容器归纳

时间:2015-08-12 10:23:44      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

Collection :   
    |--SubInterface    
        |--Set
            |-- SortSet
                |-- TreeSet
                    内部实际为TreeMap对象。
                    通过compareTo方法进行比较。
                    比较大的在left,小的在right端。
            |-- HashSet
                内部实为HashMap或LinkedHashMap,add方法实际是调用map的put
                无重复对象:需要重写hashCode和equals方法。
                无序
                允许存入null
                不同步        
            
        |--List
            |-- ArrayList
                实际内部就是数组
                new ArrayList()时创建一个空数组。add方法时初始化大小,默认值为10。
                如果存满了之后,进行扩容,扩容按照公式:原容量+原容量>>1;
                
            |-- LinkList
                 里面是Node对象first,last。

              add调用的是linkLast方法,如果last为空,last和first都是这个对象。  

              add方法如下:

              

final Node<E> l = last;
 final Node<E> newNode = new Node<>(l, e, null);
 last = newNode;
 if (l == null)
   first = newNode;
 else
   l.next = newNode;
 size++;
 modCount++;



       

            |-- Vector
                内部实为对象数组。调用add方法时初始化大小,默认值为10。
                存满了之后,进行扩容,如果传入扩容数量,则按扩容数量进行扩容,如果没有传入,则按原容量进行扩容。
                add方法是同步的。
            
Map
    |--HashMap:AbstractMap的子类
        HashMap中实际上是一个一个的Map.Entry的实现类Node对象。即HashMap实际上是Node的数组。默认大小为16个,默认临界值为12,
        当HashMap中的元素数超过12的时候,进行扩容,每次进行*2的扩容。
        put方法是非同步的,允许null键和null值。        
        put的时候会调用方法的hashCode方法和equals方法进行键的比较。
        get方法是非同步的。
        get方法即是调用getNode然后比较对象的hashCode和值(equals)如果存在,返回。
        
        |--LinkedHashMap
        
    |--HashTalbe:Dictionary的子类
        HashTable中实际是一个一个的Map.Entry的实现类Entry对象。即HashTable实际上是Entry的数组。默认大小为11个,默认临界值为8.
        当HashTable中的元素数超过8的时候,进行扩容,每次进行*2+1的扩容。临界值是容量的.75f倍。
        put方法是同步的,不允许null键和null值。
        put方法会调用对象的hashCode和equals方法进行键的比较。
        get方法是同步的。
        get方法会调用对象的hashCode和equals来比较键的值,如果存在,返回。        
    |--SortedMap    

        |--TreeMap


上面是自己的一些总结,欢迎大神指正、补充!~

Java容器归纳

标签:

原文地址:http://my.oschina.net/u/1419455/blog/491028

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!