要设置的列表,而不影响元素的顺序



我有一个字符串列表作为["abc", "xyz", "abc", "mno", "123"]

现在我想要这个列表中的唯一值。为此,我将List转换为HashSet。

我也能做到这一点,但要素的顺序受到了影响。输出是非常随机的,其中一个结果是["123", "xyz", "abc", "mno"]

但我希望结果集包含与数组列表相同顺序的项。我怎样才能做到这一点?

List<String> parameters = new ArrayList<String>();
//add the parameter to List
Set<String> parameterSet=new HashSet<String>(parameters);

使用LinkedHashSet

List<String> parameters = new ArrayList<String>();
                                            Call the List here
                                                     |
Set<String> parameterSet=new LinkedHashSet<String>(parameters);

您必须使用LinkedHashSet。否则它将无法工作,因为没有订购HashSet

您可以使用LinkedHashSet

来自JavaDocs:

Set的哈希表和链表实现接口,具有可预测的迭代顺序。此实施与HashSet的不同之处在于,它维护了一个双链接通过其所有条目运行的列表。此链接列表定义迭代顺序,即元素的顺序插入到集合中(插入顺序)。

您可以使用LinkedHashSet,这是一个维护插入顺序的集合

使用LinkedHashSet。来自Oracle文档:

Set接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与HashSet不同因为它维护了一个双链接列表,该列表贯穿其所有条目。这个链表定义了迭代顺序,即元素插入到集合中的顺序(插入顺序)。请注意,如果重新插入元素,则插入顺序不受影响进入布景。(如果s.add(e)为当.contains(e)在调用。)

最新更新