美文网首页
Java中Map,List与Set的区别

Java中Map,List与Set的区别

作者: 34sir | 来源:发表于2018-02-26 11:21 被阅读34次

    首先,数组和集合的区别:

    • 数组是大小固定
    • 集合可以存储和操作数目不固定的一组数据,集合只能存放引用类型的的数据,不能存放基本数据类型

    特性

    List

    • 允许重复
    • 有序
    • 继承自Connection

    Set

    • 不允许重复
    • 无序
    • 继承自Connection

    Map

    • 键值对
    • 区别与ListSet,既没有继承也没有实现Connection

    场景

    三者各自适用什么样的场景?

    List

    • 使用索引对元素进行访问
      ArrayList适合快速查找,LinkedList适合增删元素
    • 对有序有需求

    Set

    • 确保元素的唯一性
      常用的Set有:HashSetLinkedHashSetTreeSet。其中,TreeSet中的元素可以使用Comparator 或者 Comparable 进行排序;LinkedHashSet也按照元素的插入顺序对它们进行存储

    Map

    • 希望以键值对的形式存在
      常用的Map有:HashMapLinkedHashSetTreeMap。其中HashMap是无序的,LinkedHashSet有序,TreeMap可通过Comparator 或者 Comparable 进行排序
      另外HashTable也可以实现键值对,并且相对于HashMap是线程安全的,但是由于JAVA5以上 ConcurrentHashMap是线程安全的,但现在已经基本被HashMap取代

    怎么让HashMap同步?

    • synchronizeMap
    Map m = Collections.synchronizeMap(hashMap);
    
    • JAVA5以上 ConcurrentHashMapHashTable的替代 (即线程安全的)

    相关文章

      网友评论

          本文标题:Java中Map,List与Set的区别

          本文链接:https://www.haomeiwen.com/subject/npuexftx.html