代码之家  ›  专栏  ›  技术社区  ›  Bobby

Linkedhashmaps与Linkedhashset的优缺点是什么?

  •  6
  • Bobby  · 技术社区  · 15 年前

    有人能解释一下选择其中一个的主要好处和选择带来的不利影响吗?

    5 回复  |  直到 13 年前
        1
  •  21
  •   Benson    15 年前

    它们解决了不同的问题,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");
    
        2
  •  5
  •   Roman Kagan mianos    15 年前

    LinkedHashSet内部包含一个双重链接列表,该列表贯穿其定义元素顺序的所有条目。 此类允许空元素。

    此类实现不同步,因此必须在外部同步。 LinkedHashMap也未同步,必须在外部同步

    例如:

    Map map = Collections.synchronizedMap(new LinkedHashMap());
    

    除此之外,linkedhashset存储每个元素的单个值,linkedhashmap存储键/值对。
    在下图中,您可以看到java.util.collections。实体盒显示具体的类实现
    alt text http://www.softfinity.com/diag1.png

        3
  •  3
  •   Rickster    15 年前

    一个集合只有值,不能放入重复项。映射具有键/值对。它们有不同的用途。

    一个集合将被用作集合,传递一组对象,而当您有一个唯一的键来标识每个元素并且希望能够通过该键访问它时,映射非常有用。

        4
  •  2
  •   Rob    15 年前

    一个是集合,一个是地图。为给定方案选择正确的数据结构。

        5
  •  2
  •   DKSRathore    15 年前

    LinkedHashMap LinkedHashSet 只有一个区别 HashMap HashSet 差异,他们的父母。再一次, 哈希表 只是 哈希图 . 你可以说 哈希表 作为一个 哈希图 所有值都指向一个最终对象。因此,它们都不会给你带来太大的差异。

    使用 林克哈什集 ,您只能使用钥匙以外的最后一个物体。 使用 链接地图 ,如果将所有键的值设置为空,那么出于设置目的,它也比LinkedHashSet更好。