java容器

 一、java容器

  1.java容器类库中一共有两种主要类型:Collection和Map

    (1)Collection和Map的区别在于容器内每个槽所存储的元素的个数不同,Collection类型中,每个槽只有一个元素;Map类型中,持有key-value关联(key叫做键,value叫做值)像一个小型的数据库。所有的java容器都可以自动调整自己的尺寸。

    (2)容器关系:  

    

    (3)Collection的子类。

      List类

        1.ArrayList:以特定顺序存储元素,所以取出来的顺序和放入的顺序可能不同。 

        2.LinkedList:插入、删除、移动元素方便,随机访问元素差

      Set:每个值只能保存1个对象,不能含有重复元素。

        1.HashSet:使用散列函数

        2.TreeSet:使用红黑树

        3.LinkedHashSet:使用链表结合散列函数

      Queue:先进先出的容器

    (4)Map的子类有以下的3个:

      1.HashMap

      2.HashTable

      3.TreeMap

    (5)其他特征:

      List、Set、Map将所有的对象一律视为Object类型  

      Collection、List、Set、Map都是接口,不能实例化。继承自他们的ArrayList、Vector、HashTable、HashMap、Stack都是具体的class,这些才可以被实例化

      vector容器确切的知道它所持有的对象属于什么类别。Vector不进行边界的检查

    (6)关于Collections。

      Collections是关于集合的一个帮助类,提供了一些列的静态方法实现和各种集合的搜集、排序、线程完全化等操作。

    (7)如何选择容器类。

      容器类仅持有对象的引用,而不是将信息复制一份至数列的某个位置,一旦将对象放入容器中,将会损失对象的类别信息

      在各种List中,最好的做法是以ArrayList作为默认选择。当插入删除比较频繁时使用LinkedList(),Vector总是比ArrayList要慢;在各种Set中,HashSet通常优于HashTree。只有当需要产生一个经过排序的序列时,采用TreeSet。HashSet的意义是用来维护其内元素的排序状态;在各种Map中,HashMap用于快速查找。当各种元素固定的时候,最好使用Array,因为Array是效率最高的。      

  2.HashMap与HashTable的区别?

    (1)他们都属于Map接口的类,实现了将胃一直映射到特定的值上

    (2)HashMap类没有分类或者排序,允许将一个null键和多个null值

    (3)Hashtable类似于HashMap,但是不允许null键和null值,比HahsMap慢,因为其实同步的。

    (4)两者最大的不同是,Hashtable方法是Synchronize的,而HashMap不是;在多个线程访问 HashTable的时候,不需要自己为它的方法实现同步,而HashMap就必须为之提供同步。两者的性能不会有很大的差异。

posted @ 2019-03-09 11:19  stone1234567890  阅读(164)  评论(0编辑  收藏  举报