java 常见 Collection 总结

本篇博客内容总结于网上的两篇博客以及帮助文档:

java常用集合总结,java中常用集合类

一,List类和Set类

     1)、List接口及其实现类
           List接口继承于Collection接口。 List接口及其实现类是容量可变的列表,可按索引访问集合中的元素。
           特点:集合中的元素有序、可重复;
          

          实现类:
              ArrayList是以Arayy方式实现的List,允许快速随机存取,相对于LinkedList不适合进行插入和移除元素操作(非线程安全);
              LinkedList提供最佳顺序存取,适合插入和移除元素(非线程安全)。

             

              Array和java.util.Vector
              Vector是一种老的动态数组,线程安全的,效率很低,一般不赞成使用。
   2)、Set接口及其实现类
           Set接口同样继承于Collection接口。
           特点:集合中的元素无序、不包含重复的元素。
          

          实现类:
              HashSet 能够快速定位一个元素,要注意的是:存入HashSet中的对象必须实现HashCode()方法(非线程安全);
              TreeSet 将放入其中的元素按序存放(非线程安全)。

二,Map接口及其实现类
            Map是一个单独的接口,不继承于Collection。Map是一种把键对象和值对象进行关联的容器。
            特点:键对象不允许重复
           

         实现类:
            HashMap 实现一个键到值映射的哈希表,通过键取得值对象(非线程安全);
            Properties 一般是把属性文件读入流中后,以键-值对的形式进行保存,以方便读取其中的数据(线程安全的)。

          

             注:HashMap和HashTable
                    a.HashMap去掉了HashTable的contains方法,但是加上了containsValue()和containsKey()方法。
                    b.HashTable(继承自java.util.Dictionary<K,V> )线程安全的,而HashMap是非同步的,效率上比HashTable要高。
                    c.HashMap允许空键值,而HashTable不允许。

    4)、Iterator接口
             Iterator接口位于java.util包中,它是一个对集合进行迭代的迭代器。
              集合容器(如:List、Set、Map等)本身提供了处理元素置入和取出的方式,但是单一选取元素的方法很受限制。所以我们要用Iterator去选取容器中的元素,它将容器转换成一个序列。

 

           集合适用场景

  •                  对于查找和删除较为频繁,且元素数量较多的应用,Set或Map是更好的选择;
  •                  ArrayList适用于通过为位置来读取元素的场景;
  •                  LinkedList 适用于要头尾操作或插入指定位置的场景;
  •                  Vector 适用于要线程安全的ArrayList的场景;
  •                  Stack 适用于线程安全的LIFO场景;
  •                  HashSet 适用于对排序没有要求的非重复元素的存放;
  •                 TreeSet 适用于要排序的非重复元素的存放;
  •                  HashMap 适用于大部分key-value的存取场景;
  •                 TreeMap 适用于需排序存放的key-value场景。

     

    Collection、Set和List的区别如下:
            Collection对象之间没有指定的顺序,允许有重复元素和多个null元素对象;它是Set和List接口的父类,是一种最通用型的集合接口;

你可能感兴趣的:(java集合)