gpt4 book ai didi

java - 如何对字符串列表进行排序,其中首先出现的字符串是startsWith,然后是endsWith

转载 作者:行者123 更新时间:2023-12-01 17:49:21 24 4
gpt4 key购买 nike

我有字符串列表例如

**united**abc
**united**abcd
abcd**united**
**united**abcde
asdasdad**united**
**united**a

它是根据字符串的长度排序的,但我的想法是排序

**united**a 
**united**abc
**united**abcd
**united**abcde
abcd**united**
asdasdad**united**

所以首先出现以united开头的字符串,然后是其他以united结尾的单词。但我仍然需要保持长度顺序。

我尝试了这个,但不起作用

 if (o1.name.toLowerCase().startsWith(query)) {
return@Comparator -1
} else if (o2.name.toLowerCase().startsWith(query)) {
return@Comparator 1
} else {
return@Comparator 0
}

最佳答案

使用 Comparator.comparingthenComparing 方法组合比较器条件会更清晰,因此更不容易出错:

list.sort(Comparator.comparing((String str) -> !str.startsWith(query))
.thenComparing(str -> !str.endsWith(query))
.thenComparingInt(String::length)
.thenComparing(Comparator.naturalOrder()));

使用 ! 符号的原因是我们的 true 会排在 false 之前。

关于java - 如何对字符串列表进行排序,其中首先出现的字符串是startsWith,然后是endsWith,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52226066/

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