• Java Collection Framework


    JAVA的集合框架(Java Collection Framework)是JAVA的基础知识,在我们的开发过程中几乎是时时刻刻都要用到的东西。但是因为其中的接口和类很多,我们未必会对其完全熟悉。这里,我就做个简单的归纳和介绍。

      先来看一张图:

     

     

      从上我们可以看出,最顶端其实就是4个接口:Collection ,List ,Set ,和Map 。 其中List和Set是继承自Collection,而Map则自成一脉。这些接口都是在java.util路径下的,都属于java的基础类库rt.jar。

      这里我们需要说明一下的是,java.util.Collections,是不属于java的集合框架的。它是一个集合的工具类。比如我们常用它的排序方法:Collections.sort(List), Collections.sort(List, Comparator)。

      回到正题。上图中那么多的接口和类,各自的特性是什么呢?这是我们这篇文章关注的重点。我们可以知道,在这个图中,越是下面的子类,特性也就越丰富。而顶层的接口和类,也就越简单。我们在刚接触java的时候,用的最多的可能就是ArrayList和HashMap。我们常用的写法会是这样:

     

    Java代码
    1. List<T> pList = new ArrayList<T>();   
    2. Map<K, V> pMap = new HashMap<K, V>();   
    List<T> pList = new ArrayList<T>();
    Map<K, V> pMap = new HashMap<K, V>(); 

     

    List和Map最简单的区别就是:Map存放的是键值对,方便查找。

     

    下面我们来看一张比较简单的表格,以区分各个类的差别:

     

     

    是否有序

    是否允许重复

    是否线程同步

    Collection

     

    List

    ArrayList

    Vector

    LinkedList

    Set

    HashSet

    TreeSet

    Map

    HashMap

    <key, value>,

    key不允许重复

    TreeMap

    Hashtable

     

        可以知道,List是有序集合,而Set和Map则不一定。以Tree开头的都是有序的。而以Hash开头的,是用hash实现的,性能上比用二叉树实现的Tree**要好。

     

      关于同步问题,一般而言,非同步的类,性能比同步的要好。我们建议用Collections.synchronizedCollection(Collection<T> c)方法去处理原本非同步的类,在不丢失性能的前提下,实现同步。Java1.5提供了ConcurrentHashMap,适用于高并发的线程安全实现。

     

      写得比较简单,没有来得及研究代码。等有空的时候研究研究。也许,也只是一句空话。

  • 相关阅读:
    R中的一些数据形式
    R数据处理
    矩阵的一些知识
    R语言的一些矩阵运算
    R语言中的常用函数
    R读取数据和导出数据
    贝叶斯公式的理解方式
    R语言中bioconductor包
    R语言中的数据结构
    网页版的R设置环境变量
  • 原文地址:https://www.cnblogs.com/Fandyx/p/1954028.html
Copyright © 2020-2023  润新知