Java:<String>使用比较器进行ArrayList排序(ArrayLists不存储对象)



我想使用比较器对字符串类型的 ArrayList 进行排序。我只找到了在 ArrayList 存储对象时如何做到这一点的示例。

我有一个包含 10 个符号的字符串 ArrayList,其中最后 5 个符号是构成数字的数字。我想按每个字符串末尾的数字的升序求解数组列表。我该怎么做?

谢谢!

这是完成任务的一种方法; sorted接受Comparator对象。

List<String> result = myArrayList.stream().sorted(Comparator.comparingInt(e -> Integer.parseInt(e.substring(5))))
                                          .collect(Collectors.toList());

或者简单地:

myArrayList.sort(Comparator.comparingInt(e -> Integer.parseInt(e.substring(5))));

Collections.sort可以使用比较器对列表进行排序。另外,你需要String.substring:

Collections.sort(list, new Comparator<String>(){
    @Override
    public int compare(String o1, String o2) {
        return o1.substring(5).compareTo(o2.substring(5));
    }
});
Collections.sort(list, String::compareTo);

上面的代码完成了这项工作。

如果需要更多控制,可以使用/链接比较器接口中可用的静态方法之一。

Collectios.sort(list, Comparator.comparing(String::CompareTo).thenComparingInt(String::length));

最新更新