可以用HashSet替换此代码中的LinkedHashSet吗?

时间:2012-05-10 06:53:28

标签: java data-structures

以下代码有什么作用? LinkedHashSet可以替换为HashSet吗?

public class CollectionFunction {
    public <E> List<E> function(List<E> list) {
        return new ArrayList<E>(new LinkedHashSet<E>(list));
    }
}

4 个答案:

答案 0 :(得分:7)

  

以下代码有何作用?

似乎它用于从列表中删除重复项而不更改顺序

  1. 删除重复项(LinkedHashSet是一个Set)
  2. 维护广告订单顺序(LinkedHashSet具有可预测的迭代顺序)
  3. 转换回List
  4.   

    LinkedHashSet可以用HashSet替换吗?

    不,它不会保证订单(#2)

答案 1 :(得分:1)

Set是一个无序的项集合,其中列表必须保留所包含项的顺序。您不能使用HashSet之类的集合来实现列表,因为不会存储项目的顺序。链接的哈希集存储这些信息。

答案 2 :(得分:1)

此功能正在删除重复元素并保持插入顺序。

如果您输入a,b,c,d,a作为输入,则会输出a,b,c,d

是的,你可以

  如果您不想插入,请使用HashSet替换LinkedHashSet   顺序。

如果将LinkedhashSet替换为HashSet

,则输出可能类似于此b,c,d,a

答案 3 :(得分:-3)

它从实现List接口的对象中创建一个ArrayList。 ArrayList类有一个构造函数,它接受一个Collection: http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html 您还必须查找HashSet是否也实现了Collection http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html。 您还必须查找HashSet是否提供相应的构造函数。由于HashSet满足这两个要求,您可以替换它: - )。