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进行查询。

     

  • 相关阅读:
    NetSuite Batch Process Status
    NetSuite generated bank files and the Bank Reconciliation process
    Global Search file content in Gitlab repositories, search across repositories, search across all files
    FedEx Package Rate Integration with NetSuite direct integrate by WebServices
    git Merge branches
    git tag and NetSuite deployment tracking
    API 读写cookie的方法
    C# 生成缩略图
    解决jquery操作checkbox全选全不选无法勾选问题
    JS读取写入删除Cookie方法
  • 原文地址:https://www.cnblogs.com/cxfly/p/10540895.html
Copyright © 2011-2022 走看看