如何排序和消除ArrayList中的重复项?

时间:2019-02-13 13:51:40

标签: java

我有一个ArrayList类型的String,其中包含值为range = {300-400, 100-200, 500-600, 300-400, 500-600}

我需要整理一下并删除其中的重复项。

最终输出应为range = {100-200,300-400,500-600}

我尝试使用HashSet删除重复项,但不保留排序顺序。

Set<String> ol = new HashSet<String>(mylist);

2 个答案:

答案 0 :(得分:13)

list
    .stream()
    .distinct()
    .sorted()
    .collect(Collectors.toList());

答案 1 :(得分:11)

使用TreeSet

Set<String> sortedAndDistinct = new TreeSet<>(list);

根据定义,Set仅允许不同的值。 TreeSet会根据其自然顺序对值进行排序(如果在创建时未提供Comparator的话)。

对于String,自然顺序是按字典顺序排列的,换言之,a小于z,或者在您的情况下,100-200小于500-600