Java HashMap 和 TreeMap区别

「爱情、让人受尽委屈。」 2023-09-23 23:29 236阅读 0赞

1. HashMap

java.util.HashMap 类是基于哈希的实现。在 HashMap 中,我们有一个键和一个值对
HashMap<K, V> hmap = new HashMap<K, V>();

  1. public class Test2 {
  2. public static void main(String[] args) {
  3. String[] names={
  4. "Mary","John","Emma"};
  5. int[] heights ={
  6. 180,165,170};
  7. int length = names.length;
  8. String[] result = new String[names.length];
  9. Map<Integer, String> map = new HashMap<Integer, String>();
  10. for (int i = 0; i < names.length; i++) {
  11. map.put(heights[i], names[i]);
  12. }
  13. System.out.println(map);
  14. }
  15. }
  16. {
  17. 180=Mary, 165=John, 170=Emma}
  • HashMap 不维护任何顺序,既不基于键也不基于值,如果我们希望键按照排序的顺序维护,我们需要使用 TreeMap。
  • 复杂性:get/put/containsKey() 操作在平均情况下是 O(1),但完全取决于计算哈希值需要多少时间。

2.TreeMap

只需要按排序顺序存储唯一元素时,TreeMap 会有点方便。 Java.util.TreeMap 在后台使用红黑树确保没有重复;此外,它还按排序顺序维护元素。
TreeMap<K, V> hmap = new TreeMap<K, V>();

  1. public class Test2 {
  2. public static void main(String[] args) {
  3. String[] names={
  4. "Mary","John","Emma"};
  5. int[] heights ={
  6. 180,165,170};
  7. int length = names.length;
  8. String[] result = new String[names.length];
  9. TreeMap<Integer, String> map = new TreeMap<Integer, String>();
  10. for (int i = 0; i < names.length; i++) {
  11. map.put(heights[i], names[i]);
  12. }
  13. System.out.println(map);
  14. }
  15. }
  16. {
  17. 165=John, 170=Emma, 180=Mary}

对于 add、remove、containsKey 等操作,时间复杂度为 O(log n,其中 n 是 TreeMap 中存在的元素数。
TreeMap 始终使元素保持排序(递增)的顺序,而 HashMap 中的元素没有顺序。 TreeMap 还为键的 first、last、floor 和 ceiling 提供了一些方法。

3.HashMap 和 TreeMap区别

1.HashMap 实现了 Map 接口,而 TreeMap 实现了 SortedMap 接口。 Sorted Map 接口是 Map 的子接口。
2.HashMap 实现了哈希,而 TreeMap 实现了红黑树(一种自平衡二叉搜索树)。因此,散列和平衡二叉搜索树之间的所有差异都适用于此。
3.HashMap 和 TreeMap 都有对应的 HashSet 和 TreeSet。 HashSet 和 TreeSet 实现了 Set 接口。在 HashSet 和 TreeSet 中,我们只有键,没有值,这些主要用于查看集合中的存在/不存在。

在这里插入图片描述

发表评论

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

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

相关阅读

    相关 JavaHashMapTreeMap区别

    首先介绍一下什么是Map。在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value。这就

    相关 HashMapTreeMap区别

    HashMap:数组方式存储key/value,线程非安全,允许null作为key和value,key不可以重复,value允许重复,不保证元素迭代顺序是按照插入时的顺序,ke