如何从ArrayList中排序和消除重复项? [关闭]

问题描述 投票:-2回答:2

我有一个ArrayListString类型,其值包含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);

java
2个回答
13
投票
list
    .stream()
    .distinct()
    .sorted()
    .collect(Collectors.toList());

11
投票

使用TreeSet

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

根据定义,Set仅允许不同的值。并且TreeSet根据它们的自然顺序对值进行排序(如果在创建时没有提供Comparator)。

对于Strings,自然顺序是词典的,换句话说,a小于z或在你的情况下100-200小于500-600

© www.soinside.com 2019 - 2024. All rights reserved.