我有一个字符串列表["abc", "xyz", "abc", "mno", "123"]
现在我想要这个列表中的唯一值。为此,我将List转换为HashSet。
我能够实现相同但元素的顺序受到影响。输出非常随机,其中一个结果是["123", "xyz", "abc", "mno"]
。
但是我希望结果集包含与arraylist相同顺序的项目。我怎样才能做到这一点?
List<String> parameters = new ArrayList<String>();
//add the parameter to List
Set<String> parameterSet=new HashSet<String>(parameters);
答案 0 :(得分:8)
使用LinkedHashSet
List<String> parameters = new ArrayList<String>();
Call the List here
|
Set<String> parameterSet=new LinkedHashSet<String>(parameters);
答案 1 :(得分:2)
您必须使用LinkedHashSet
。否则它将无效,因为未订购HashSet
。
答案 2 :(得分:2)
您可以使用LinkedHashSet
。
来自JavaDocs:
Set的哈希表和链表实现 接口,具有可预测的迭代顺序。这个实现 与HashSet的不同之处在于它保持了双重链接 列表遍历其所有条目。此链接列表定义 迭代排序,即元素的顺序 插入集合(插入顺序)。
答案 3 :(得分:2)
您可以使用LinkedHashSet这是一个维护广告订单的集合
答案 4 :(得分:1)
使用LinkedHashSet
。
来自Oracle doc:
使用Set接口的哈希表和链表实现 可预测的迭代顺序。此实现与HashSet不同 因为它维护着一个贯穿所有链接的双向链表 条目。该链表定义了迭代排序,即 将元素插入集合(插入顺序)的顺序。 请注意,如果重新插入元素,则不会影响插入顺序 进入集合。 (如果s.add(e)是,则将元素e重新插入到集合中 当s.contains(e)在紧接之前返回true时调用 调用。)