当前位置: 首页 > 面试题库 >

Java HashMap,LinkedHashMap和TreeMap之间的区别

全昊焜
2023-03-14
问题内容

是什么区别HashMapLinkedHashMapTreeMapJava中?我没有看到输出的任何差异,因为这三个都有keySetvalues。什么是Hashtables

Map m1 = new HashMap();
m1.put("map", "HashMap");
m1.put("schildt", "java2");
m1.put("mathew", "Hyden");
m1.put("schildt", "java2s");
print(m1.keySet()); 
print(m1.values()); 

SortedMap sm = new TreeMap();
sm.put("map", "TreeMap");
sm.put("schildt", "java2");
sm.put("mathew", "Hyden");
sm.put("schildt", "java2s");
print(sm.keySet()); 
print(sm.values());

LinkedHashMap lm = new LinkedHashMap();
lm.put("map", "LinkedHashMap");
lm.put("schildt", "java2");
lm.put("mathew", "Hyden");
lm.put("schildt", "java2s");
print(lm.keySet()); 
print(lm.values());

问题答案:

这三个类都实现了该Map接口,并提供了几乎相同的功能。最重要的区别是通过条目进行迭代的顺序:

  • HashMap绝对不保证迭代顺序。添加新元素时,它甚至可以(并将)完全改变。
  • TreeMap将根据密钥的“自然顺序”(根据其compareTo()方法)(或外部提供的Comparator)进行迭代。此外,它实现了SortedMap接口,该接口包含依赖于此排序顺序的方法。
  • LinkedHashMap 将按照条目放入地图的顺序进行迭代
    “哈希表”是基于哈希的映射的通用名称。在Java API的上下文中, Hashtable是从Java 1.1到集合框架存在之前的过时的类。不再使用它,因为它的API充满了重复功能的过时方法,并且其方法是同步的(这会降低性能,并且通常是无用的)。使用ConcurrentHashMap而不是Hashtable


 类似资料:
  • 问题内容: 我正在准备软件面试,现在已经有几天困扰了我。 我还无法弄清Java Collection API中存在的linkedhashmap,map,hashtable,hashmap之间的区别。 所有这些都具有相同的获取和放置复杂性吗?我知道map是接口类,而hashmap,hashtable,linkedhashmap实现此接口。那么这是否意味着这3个类的内部实现是相同的?如何在collec

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。

  • 问题内容: 有人可以解释一下 和 我不知道“确切”的含义 问题答案: 在这个例子中,什么都没有。当您具有多个具有相似名称的路径时,该参数将起作用: 例如,假设我们有一个显示用户列表的组件。我们还有一个用于创建用户的组件。的网址应嵌套在下。因此,我们的设置可能如下所示: 现在,这里的问题是,当我们转到路由器时,将通过所有定义的路由,并返回它找到的第一个匹配项。因此,在这种情况下,它将首先找到路线,然

  • 问题内容: 我开始学习Java。什么时候可以在TreeMap上使用HashMap? 问题答案: 是一个的示例,这意味着可以对键的顺序进行排序,并且在对键进行迭代时,可以期望它们会按顺序排列。 另一方面,不作任何保证。因此,当遍历a的键时,您无法确定它们将以什么顺序排列。 一般而言,它会更有效,因此只要您不关心键的顺序,都可以使用它。