能否有人解释一下选择其中一种的主要好处和随之而来的缺点?
能否有人解释一下选择其中一种的主要好处和随之而来的缺点?
它们解决不同的问题,LinkedHashMap用于将键映射到值,而LinkedHashSet仅存储无重复项的集合。
LinkedHashMap用于映射键/值对,例如存储姓名和年龄:
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());
集合只有值,不能重复。映射有键/值对。它们有不同的用途。
集合将被用作一个集合,传入一组对象,而映射在你有一个唯一的键来标识每个元素并且你想通过该键访问它时非常有用。
一个是集合,一个是映射。根据给定的场景选择正确的数据结构。
LinkedHashMap
和 LinkedHashSet
只有一个区别,那就是它们的父类不同,HashMap
和 HashSet
的区别。再次强调,HashSet
只是 HashMap
的变体。你可以把 HashSet
看作是所有值都指向单个最终对象的 HashMap
。因此,两者之间并没有太大的区别。
使用 LinkedHashSet
,除了键之外,您只需使用一个最终对象。
如果将所有键的值设置为 null,则使用 LinkedHashMap
比使用 LinkedHashSet 更好。