Du *_*ran 2 java sorting java-stream
名单是: Arrays.asList("Za", "ab", "AB", "Sa", "1ab", "Ab", "!Ab");
如果我用stream().sorted()
那么命令是:!Ab 1ab AB Ab Za ab
--> 前面的ab不应该za。
如果我用sorted(String.CASE_INSENSITIVE_ORDER)
那么顺序是!Ab 1ab ab AB Ab Za
--> 这个时候,AB在ab后面。
有什么方法可以将这两个规则结合起来,以便我们按字母顺序排列列表并且大写大于小写?
添加示例:1AB - A0B - AbD - aBD - abd1 - ZAB
按字母顺序排序(Z 永远不会在 a 前面)和数字 > 大写 > 小写 ( AbD > aBD
)
问题是ab
和AB
是相等的;因此它们本身在结果中是无序的。所以添加一个正常的比较,因为大写字母在小写字母之前。
list.stream()
.sorted(String.CASE_INSENSITIVE_ORDER
.thenComparing(Comparator.naturalOrder()))
Run Code Online (Sandbox Code Playgroud)
评论后
list.stream()
.sorted(String.CASE_INSENSITIVE_ORDER
.thenComparing(Comparator.reverseOrder()))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1994 次 |
最近记录: |