我想使用比较器对字符串类型的 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));