集合综述

Java集合工具包框架图(如下):

Collection包含了List和Set两大分支。
  (01) List是一个有序的队列,每一个元素都有它的索引。第一个元素的索引值是0。

          List(后缀):有序(存入和取出的顺序一致)列表,允许存放重复的元素; 

          ArrayList:数组实现,查询快,增删慢,线程不安全,轻量级;

          LinkedList:链表实现,增删快,查询慢  注意LinkedList没有同步方法。

                   如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:    

                 List list = Collections.synchronizedList(new LinkedList(...));

          Vector:数组实现,线程安全,重量级 Vector和ArrayList在更多元素添加进来时会请求更大的空间。Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%. 

 

  (02) Set是一个不允许有重复元素的集合,无序,允许有null

          判断元素的唯一性:

         通过对象的hashCode和equals方法来完成对象唯一性的。

         如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中。

         如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true。 如果为true,视为相同元素,不存。

         如果为false,那么视为不同元素,就进行存储。 注意:如果元素要存储到HashSet集合中,必须覆盖hashCode方法和equals方法。
          

      Map是一个映射接口,即key-value键值对。Map中的每一个元素包含“一个key”和“key对应的value”。

      AbstractMap是个抽象类,它实现了Map接口中的大部分API。而HashMap,TreeMap,WeakHashMap都是继承于AbstractMap。

     

参考:

http://www.cnblogs.com/skywang12345/p/3308498.html

http://www.cnblogs.com/skywang12345/p/3308513.html

posted on 2018-09-24 21:26  溪水静幽  阅读(92)  评论(0)    收藏  举报