java 集合 之 如何选择集合

使用java集合的 “缺点”

集合不能使用基本数据类型,只能使用对象句柄

在将对象置入一个集合时丢失了类型信息,集合实际容纳的是类型为Object 的一些对象的句柄,但不包含基本数据类型,不存在类型信息,使用之前要进行类型塑造。

集合框架

集合比较

个人总结 

如何选择集合:

是否键值对:

  是:Map

    键是否排序:

      是:TreeMap,类似TreeSet

      否:HashMap(不知道就使用HashMap),线程不安全,类似hashset。linkedHashMap(有序)继承于它。

      Hashtable:线程安全,但是锁定整个表

      ConcurrentHashMap:线程安全,使用桶锁

  否:Collection
    元素唯一:

      是:set

        元素排序:

          是:TreeSet

          否:HashSet(不知道用HashSet)

          线程安全的结构:

          CopyOnWriteArraySet

      否:List

        安全:

          是:Vector(其实不用)

          否:ArrayList或者LinkedList

            增删多:LinkedList。适合增加删除以及修改的操作线程不安全,效率高

            查询多:ArrayList(不知道就用)。适合随机的查找,增删慢,线程不安全,效率高        

                两种线程安全的arrayList
                CopyOnWriteArrayList类 (内部是使用lock进行加锁解锁完成单线程访问)
                Collections.synchronizedList内部类(使用synchronize关键字,插入比上面的快,数据量10万)

 

发布了193 篇原创文章 · 获赞 13 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u013919153/article/details/105483472