有人可以解释一个选择另一个的主要好处以及该选择带来的不利因素吗?
答案 0 :(得分:21)
他们解决了不同的问题,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");
答案 1 :(得分:5)
LinkedHashSet内部包含一个双向链表,该列表运行所有定义元素顺序的条目。 此类允许null元素。
此类实现未同步,因此必须在外部进行同步。 LinkedHashMap也未同步,必须在外部同步
例如:
Map map = Collections.synchronizedMap(new LinkedHashMap());
除了LinkedHashSet每个元素存储单个值,LinkedHashMap存储键/值对
在下图中,您可以看到java.util.Collections。实心框显示具体类实现
alt text http://www.softfinity.com/diag1.png
答案 2 :(得分:3)
Set只有值,你不能把重复项放入。一个Map有一个键/值对。它们有不同的用途。
一个集合将被用作集合,传入一组对象,而当一个唯一键用于标识每个元素并且您希望能够通过该键访问它时,映射非常有用。
答案 3 :(得分:2)
一个是一组,一个是地图。为给定方案选择正确的数据结构。
答案 4 :(得分:2)
LinkedHashMap
和LinkedHashSet
只有一个区别,那就是他们的父母HashMap
和HashSet
差异。同样,HashSet
只是HashMap
的变体。您可以将HashSet
称为HashMap
,其中所有值都指向单个最终对象。因此,它们都不会给你带来太大的差异。
使用LinkedHashSet
,您只能使用除键以外的最终对象。
使用LinkedHashMap
,如果为所有键设置值为null,那么它也优于LinkedHashSet用于Set目的。