java 集合比较

电玩女神 2022-08-21 12:48 263阅读 0赞
  1. Collection(单列集合)
  2. List(有序,可重复)
  3. ArrayList
  4. 底层数据结构是数组,查询快,增删慢 线程不安全,效率高
  5. Vector
  6. 底层数据结构是数组,查询快,增删慢 线程安全,效率低
  7. LinkedList
  8. 底层数据结构是链表,查询慢,增删快 线程不安全,效率高
  9. Set(无序,唯一)
  10. HashSet
  11. 底层数据结构是哈希表。
  12. 哈希表依赖两个方法:hashCode()和equals()
  13. 执行顺序:
  14. 首先判断hashCode()值是否相同
  15. 是:继续执行equals(),看其返回值
  16. true:说明元素重复,不添加
  17. false:就直接添加到集合
  18. 否:就直接添加到集合
  19. 最终:
  20. 自动生成hashCode()和equals()即可
  21. LinkedHashSet
  22. 底层数据结构由链表和哈希表组成。
  23. 由链表保证元素有序。
  24. 由哈希表保证元素唯一。
  25. TreeSet
  26. 底层数据结构是红黑树。(是一种自平衡的二叉树)
  27. 如何保证元素唯一性呢?
  28. 根据比较的返回值是否是0来决定
  29. 如何保证元素的排序呢?
  30. 两种方式
  31. 自然排序(元素具备比较性)
  32. 让元素所属的类实现Comparable接口
  33. 比较器排序(集合具备比较性)
  34. 让集合接收一个Comparator的实现类对象
  35. Map(双列集合)
  36. A:Map集合的数据结构仅仅针对键有效,与值无关。
  37. B:存储的是键值对形式的元素,键唯一,值可重复。
  38. HashMap
  39. 底层数据结构是哈希表。线程不安全,效率高
  40. 哈希表依赖两个方法:hashCode()和equals()
  41. 执行顺序:
  42. 首先判断hashCode()值是否相同
  43. 是:继续执行equals(),看其返回值
  44. true:说明元素重复,不添加
  45. false:就直接添加到集合
  46. 否:就直接添加到集合
  47. 最终:
  48. 自动生成hashCode()和equals()即可
  49. LinkedHashMap
  50. 底层数据结构由链表和哈希表组成。
  51. 由链表保证元素有序。
  52. 由哈希表保证元素唯一。
  53. Hashtable
  54. 底层数据结构是哈希表。线程安全,效率低
  55. 哈希表依赖两个方法:hashCode()和equals()
  56. 执行顺序:
  57. 首先判断hashCode()值是否相同
  58. 是:继续执行equals(),看其返回值
  59. true:说明元素重复,不添加
  60. false:就直接添加到集合
  61. 否:就直接添加到集合
  62. 最终:
  63. 自动生成hashCode()和equals()即可
  64. TreeMap
  65. 底层数据结构是红黑树。(是一种自平衡的二叉树)
  66. 如何保证元素唯一性呢?
  67. 根据比较的返回值是否是0来决定
  68. 如何保证元素的排序呢?
  69. 两种方式
  70. 自然排序(元素具备比较性)
  71. 让元素所属的类实现Comparable接口
  72. 比较器排序(集合具备比较性)
  73. 让集合接收一个Comparator的实现类对象
  74. 2:到底使用那种集合(自己补齐)
  75. 看需求。
  76. 是否是键值对象形式:
  77. 是:Map
  78. 键是否需要排序:
  79. 是:TreeMap
  80. 否:HashMap
  81. 不知道,就使用HashMap
  82. 否:Collection
  83. 元素是否唯一:
  84. 是:Set
  85. 元素是否需要排序:
  86. 是:TreeSet
  87. 否:HashSet
  88. 不知道,就使用HashSet
  89. 否:List
  90. 要安全吗:
  91. 是:Vector(其实我们也不用它,后面我们讲解了多线程以后,我在给你回顾用谁)
  92. 否:ArrayList或者LinkedList
  93. 增删多:LinkedList
  94. 查询多:ArrayList
  95. 不知道,就使用ArrayList
  96. 不知道,就使用ArrayList
  97. 3:集合的常见方法及遍历方式
  98. Collection:
  99. add()
  100. remove()
  101. contains()
  102. iterator()
  103. size()
  104. 遍历:
  105. 增强for
  106. 迭代器
  107. |--List
  108. get()
  109. 遍历:
  110. 普通for
  111. |--Set
  112. Map:
  113. put()
  114. remove()
  115. containskey(),containsValue()
  116. keySet()
  117. get()
  118. value()
  119. entrySet()
  120. size()
  121. 遍历:
  122. 根据键找值
  123. 根据键值对对象分别找键和值

发表评论

表情:
评论列表 (有 0 条评论,263人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java集合类性能比较

    在Java中,集合类是用于存储和操作一组对象的容器。根据它们的特性、使用场景和性能表现,主要的集合类有以下几种: 1. List:线性结构,允许插入和删除操作,但不保证元素的

    相关 JAVA集合比较

    需求,将岗位按照热门、推荐、正常排序 由于设计的是字典,且键值不管按照倒叙还是正序都无法满足需求(别问我为什么,问以前设计的人) ![225da957127141e9879

    相关 常见集合比较

    Hashmap 和hashtable的区别 1 HashMap不是线程安全的 ,HashTable是线程安全的 ,由于非线程安全,效率上可能高于Hashtable。 H