【发布时间】:2009-06-10 21:30:48
【问题描述】:
有人能解释一下选择其中一个的主要好处以及该选择带来的坏处吗?
【问题讨论】:
-
我很困惑,问了一个愚蠢的问题,不过感谢您的快速回答。
标签: java linkedhashmap linkedhashset
有人能解释一下选择其中一个的主要好处以及该选择带来的坏处吗?
【问题讨论】:
标签: java linkedhashmap linkedhashset
它们解决不同的问题,LinkedHashMap 将键映射到值,LinkedHashSet 只是存储没有重复的事物的集合。
链接哈希映射用于映射键/值对——例如,存储姓名和年龄:
Map<String,Integer> namesAndAges = new LinkedHashMap<String,Integer>();
namesAndAges.put("Benson", 25);
namesAndAges.put("Fred", 19);
另一方面,链接哈希集用于存储一个事物的集合——名称,例如:
Set<String> names = new LinkedHashSet<String>();
names.add("Benson");
names.add("Fred");
【讨论】:
LinkedHashSet 内部包含一个双向链表,贯穿其定义元素顺序的所有条目。 此类允许空元素。
这个类的实现是不同步的,所以必须对外同步。 LinkedHashMap 也不同步,必须对外同步
例如:
Map map = Collections.synchronizedMap(new LinkedHashMap());
LinkedHashSet 存储每个元素的单个值,而 LinkedHashMap 存储键/值对。
在下图中,您可以看到 java.util.Collections。实心框显示具体的类实现
alt text http://www.softfinity.com/diag1.png
【讨论】:
Set 只有值,不能重复。 Map 有一个键/值对。它们有不同的用途。
一个集合将被用作一个集合,传递一组对象,而当您有一个唯一的键来标识每个元素并且您希望能够通过该键访问它时,映射很有用。
【讨论】:
一个是集合,一个是地图。为给定场景选择正确的数据结构。
【讨论】:
LinkedHashMap 和 LinkedHashSet 只有一个区别,那就是 HashMap 和 HashSet 区别,它们的父母。同样,HashSet 只是HashMap 的变体。您可以将HashSet 说成HashMap,所有值都指向一个最终对象。因此,它们都不会给您带来太大的差异。
使用LinkedHashSet,您将只使用一个最终对象,而不是您的密钥。
使用LinkedHashMap,如果您将所有键的值设置为空,那么它也比 LinkedHashSet 更好。
【讨论】: