gpt4 book ai didi

java - 自定义排序方式是A排在a之前,B排在b之前

转载 作者:行者123 更新时间:2023-12-01 09:02:46 26 4
gpt4 key购买 nike

我有一个这样的颜色列表:

Pink, Blue, Red, blue, Grey, green, purple, black ...etc


List<String> listOfColors =  Arrays.asList("Pink", "Blue", "Red", "blue", "Grey", "green", "purple", "black");

有一些中间操作,例如过滤一些水果颜色,现在剩下过滤结果了,我希望它们按顺序进行排序:

Blue, black, blue, Grey, green, Pink, purple, Red



我试过了 :

List<String> collect = listOfColors.stream().sorted(String::compareToIgnoreCase)
.collect(Collectors.toList());

它不能按预期方式工作。

输出如下:

black, Blue, blue, green, Grey, Pink, purple, Red



我想要以下内容:

Blue, black, blue, Grey, green, Pink, purple, Red

最佳答案

我的解决方案是通过使用Comparator.thenComparing()方法在两个步骤中使用排序。

首先,仅通过忽略大小写的第一个字符来比较字符串。
因此,具有相同第一个字符(无论大小写)的组到目前为止仍未排序。然后,在第二步中,应用常规字母排序对未排序的子组进行排序。

List<String> listOfColors =  Arrays.asList("Pink", "Blue", "Red", "blue", "Grey", "green", "purple", "black");
Comparator<String> comparator = Comparator.comparing(s ->
Character.toLowerCase(s.charAt(0)));
listOfColors.sort(comparator.thenComparing(Comparator.naturalOrder()));
System.out.println(listOfColors);

也许仍然可以对其进行优化,但是它给出了预期的结果:

[Blue, black, blue, Grey, green, Pink, purple, Red]

关于java - 自定义排序方式是A排在a之前,B排在b之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59998716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com