LISTMAPSET总结

Posted tanyunlong_nice

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LISTMAPSET总结相关的知识,希望对你有一定的参考价值。

List、Set 和 Map 都是实现了 Collection 接口的接口。本文将讨论 Java 语言中这三者之间的区别。

List Vs Set Vs Map

1) 重复性

  • List 允许有重复元素。任何数量的重复元素都可以在不影响现有重复元素的值及其索引的情况下插入到 List。
  • Set 不允许重复。Set 以及所有实现了 Set 接口的类都不允许重复值的插入。
  • Map 以键值对的形式对元素进行存储。Map 不允许重复键但允许重复值

    2) 空值

    • List 允许任意数量的空值
    • Set 最多允许一个空值的出现。
    • Map 只允许出现一个空键但允许任意数量的空值

    3) 排序

    • List 及其所有实现类保持了每个元素的插入顺序
    • Set 中的元素都是无序的;但某些 Set 的实现类以某种顺序对其中的元素进行排序,比如 LinkedHashSet 按照元素的插入顺序进行排序。
    • Map 跟 Set 一样对元素进行无序存储,但其某些实现类对元素进行了排序。比如,TreeMap 依据键对其中的元素进行升序排序而 LinkedHashMap 则按照每个元素的插入次序进行排序。

    4) 常用实现类

    • List:ArrayList、LinkedList 等等。
    • Set:HashSet、LinkedHashSet、TreeSet、SortedSet 等等。
    • Map:HashMap、TreeMap、WeakHashMap、LinkedHashMap、IdentityHashMap 等等。

    什么时候使用 Java 里的 List、Set 和 Map?

    1) 如果你的数据不允许有重复值,Set 是最适合的选择,因为其所有实现类都不允许有重复值。
    2) 如果需要经常根据元素的索引值进行一些查询操作,那么 List(ArrayList)将是一个不错的选择。
    3) 如果需要保留每个元素的插入次序,那么还是首选 List。
    4) 如果你的数据需要进行 key - value 映射,那么就是 Map 了。

    原文链接:http://blog.csdn.net/defonds/article/details/47837867

    以上是关于LISTMAPSET总结的主要内容,如果未能解决你的问题,请参考以下文章

    Java集合类 ---- Java三大集合类(ListMapSet)分析

    2.01 以指定的次序返回查询结果

    详述ListMapSet的区别?(

    详述ListMapSet的区别?(

    Scala中ListMapSet各类型操作汇总

    算法课字典序问题