示例:
我们的名单上有5个名字:凯文、汉斯、弗里茨、汉·索罗、彼得
我现在想要所有在顶部包含“han”的名字。
因此排序后的列表如下所示:
Hans,Han Solo,Kevin,Fritz,Peter
到目前为止我所尝试的:
什么都没有,因为我没有线索,但我已经谷歌了,没有找到任何东西。
从列表中删除/添加项目不是一个选项,因为我正在使用CheckListView
(ControlsFX组件)中的列表,其中每个项目都具有会丢失的选中状态。
只需使用comparator
并根据您的条件定义您自己的比较方法:
public static void main(String[] args) {
List<String> names = Arrays.asList("Kevin,Hans,Fritz,Han Solo,Peter".split(","));
Collections.sort(names, new Comparator<String>() {
final String PREFIX = "Han";
@Override
public int compare(String a, String b) {
if (a.contains(PREFIX) && b.contains(PREFIX)) return a.compareTo(b);
if (a.contains(PREFIX) && !b.contains(PREFIX)) return -1;
if (!a.contains(PREFIX) && b.contains(PREFIX)) return 1;
return 0;
}
});
for (String n : names) {
System.out.println(n);
}
}
输出(IMHOHan Solo
必须在Hans
之前,因为Space
在S
之前,但您可以轻松修改我提出的条件)
Han Solo
Hans
Kevin
Fritz
Peter
在Java 8中,您可以根据应用于元素的函数创建comparator
s。还有一些方法可以颠倒比较器和链式比较器产生的顺序。
这允许相对简单地创建一个比较器,使用子字符串的存在作为主要排序准则,使用string
排序作为次要准则。请注意,根据您的需求,第二部分(.ThenComparator.NaturalOrder())
)可能不是必需的:
final String part = "Han";
Comparator<String> comparator = Comparator.<String, Boolean>comparing(s -> s.contains(part)).reversed()
.thenComparing(Comparator.naturalOrder());
使用此比较器
对项目进行排序的结果是
Han Solo, Hans, Fritz, Kevin, Peter
我有一个字符串数组,中间有一个空白。我想根据空白之前的第一个子字符串对内容进行排序,然后根据空白之后的子字符串对内容进行排序。 例如,如果我的数组如下所示:,那么最后我需要。 我尝试在下面实现一个新的比较器: 但是我得到了这个错误: MyClass。java:7:错误:找不到合适的排序方法(字符串[], 这个错误听起来像是集合框架不支持排序字符串,这没有多大意义。
我正在尝试编写一个程序,根据列表中最不频繁的字符排列字符串列表。例如,如果列表是,列表中的字母频率将是a-5,n-3,p-2,e-2,l-1,o-1,r-1,g-1,b-1。由于橙色包含最不频繁的字母,程序将返回橙色,然后是apple,然后是banana。 到目前为止,我已经编写了按频率排列列表中所有字母的代码。但我需要应用它来找出哪个字符串包含最不频繁的字母。 这是我的代码:
本文向大家介绍Python对字符串列表进行排序,包括了Python对字符串列表进行排序的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将看到如何对字符串列表进行排序。我们将使用sort方法和sorted函数对给定的字符串列表进行排序。然后,我们将了解如何根据不同的条件(例如长度,值等)对字符串列表进行排序, 让我们看看如何使用list.sort方法对字符串列表进行排序。排序方法列表是一个
问题内容: 我正在尝试对字符串列( 包含数字 )进行排序。 您会看到Mysql的自然排序算法放在后面( 对于大多数应用程序来说都可以 ),但是我有独特的需求,因此我希望结果应该像这样排序。 仅使用SQL 是否可能,或者我必须在应用程序级别操纵结果集? 问题答案: 继续 假设 它始终为WORD_space_NUMBER,这应该可行: 使用POSITION查找空间,使用SUBSTRING捕获其后的数字
问题内容: 我有一个具有以下格式的字符串列表: …,我想根据零件的字母顺序对列表进行排序。我将如何去做呢? 问题答案: 要更改排序键,使用的参数: 与以下方法相同: 请注意,如问题中所述,这将是字母排序,因此对于2位数字的组件,它不会将它们解释为数字,例如,“ 11”将出现在“ 2”之前。
问题内容: 我想对具有nr的字符串进行排序。我怎么做? 可以说我的整数是 在主要我做class2.Sort(); 提前致谢。 问题答案: