在 Java 中 和 有什么区别?
我没有看到输出有任何区别,因为所有三个都有和.什么是s?HashMap
LinkedHashMap
TreeMap
keySet
values
Hashtable
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的上下文中,
是集合框架存在之前的Java 1.1时代的过时类。它不应该再被使用,因为它的 API 充满了重复功能的过时方法,并且它的方法是同步的(这会降低性能并且通常无用)。使用 ConcurrentHashMap 而不是 Hashtable。Hashtable
网友回答:
我更喜欢视觉呈现:
财产 | 哈希地图 | 树状图 | 链接哈希地图 |
---|---|---|---|
迭代顺序 | 没有保证订单,将随着时间的推移保持不变 | 根据自然顺序排序 | 插入顺序 |
获取/放置/删除/包含密钥 | O(1) | O(log(n)) | O(1) |
接口 | 地图 | 可导航地图, 地图, 排序地图 | 地图 |
空值/键 | 允许 | 仅值 | 允许 |
快速故障行为 | 无法保证迭代器的快速故障行为,在存在不同步并发修改的情况下无法做出任何硬保证 | 无法保证迭代器的快速故障行为,在存在不同步并发修改的情况下无法做出任何硬保证 | 无法保证迭代器的快速故障行为,在存在不同步并发修改的情况下无法做出任何硬保证 |
实现 | 桶 | 红黑树 | 双链接存储桶 |
已同步 | 实现不同步 | 实现不同步 | 实现不同步 |
网友回答:
所有三个都表示从唯一键到值的映射,因此实现了 Map 接口。
hashCode()
equals()
模板简介:该模板名称为【HashMap、LinkedHashMap 和 TreeMap 的区别?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。