zoukankan      html  css  js  c++  java
  • JAVA的集合类型

    Collection

        -----List

                   -----LinkedList    非同步

                    ----ArrayList      非同步,实现了可变大小的元素数组

                    ----Vector          同步

                             ------Stack

        -----Set   不允许有相同的元素

     

    Map

        -----HashTable        同步,实现一个key--value映射的哈希表

        -----HashMap          非同步,

        -----WeakHashMap   改进的HashMap,实现了“弱引用”,如果一个key不被引用,则被GC回收

    Collection:

    Java API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下:

    Collection<–List<–Vector

    Collection<–List<–ArrayList

    Collection<–List<–LinkedList

    Collection<–Set<–HashSet

    Collection<–Set<–HashSet<–LinkedHashSet

    Collection<–Set<–SortedSet<–TreeSet

    Vector : 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能走入Array的限制。性能也就不可能超越Array。所以,在可能的情况下,我们要多运用Array。另外很重要的一点就是Vector“sychronized”的,这个也是Vector和ArrayList的唯一的区别。

    ArrayList:同Vector一样是一个基于Array上的链表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些,但是当运行到多线程环境中时,可需要自己在管理线程的同步问题。

    LinkedList:LinkedList不同于前面两种List,它不是基于Array的,所以不受Array性能的限制。它每一个节点(Node)都包含两方面的内容:1.节点本身的数据(data);2.下一个节点的信息(nextNode)。所以当对LinkedList做添加,删除动作的时候就不用像基于Array的List一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了。这就是LinkedList的优势。

    List总结:

    1. 所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ];

    2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];

    3. 所有的List中可以有null元素,例如[ tom,null,1 ];

    4. 基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作。

    HashSet:虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List的根本区别。HashSet的存储方式是把HashMap中的Key作为Set的对应存储项。

    Map:

    Map是java集合的另一个根接口,下图中是Map体系中一些常用的实现类。

     

        map也像一个罐子,不过在map中存储的时候都是以键值对的方式存储的(key-value方式)。存储的时候,key值是不能重复的,相当于索引,而value值是可以重复的。查询value值时通过key进行查询。

     

  • 相关阅读:
    opendressinghash //use resize array
    ChainingHash
    Hash function
    stack && queue
    random_select
    counting sort
    master theorem
    各排序算法及其比较
    视图中添加主键的方法
    oracle表空间的扩展
  • 原文地址:https://www.cnblogs.com/cxfly/p/10540895.html
Copyright © 2011-2022 走看看