[英]Sort strings by index number of word (the number is given as an argument) in java
例如,如果我确定需要按第二个单词排序。 我可以这样创建比较器。
class SecondWordComparator implements Comparator<String>
{
@Override
public int compare(String s1, String s2)
{
String[] a1 = s1.split(" ");
String[] a2 = s2.split(" ");
return a1[1].compareTo(a2[1]);
}
}
是否可以通过参数将另一个单词的索引号提供给Comparator?
不通过Comparator
的参数(参数) ,否,但是您可以:
使它成为您的Comparator
具体课程的一个领域,或
如果将Comparator
实现为匿名类,则它可以是final
变量或参数,实现将关闭
#1相当琐碎。 这是#2( 实时复制 )的示例:
import java.util.*;
class Example
{
public static void main (String[] args) throws java.lang.Exception
{
String[] strings = new String[] {
"one two three",
"uno due tre",
"uno dos tres",
"un deux trois"
};
sort(strings, 2); // 2 = third word
for (String s : strings) {
System.out.println(s);
}
}
private static void sort(String[] strings, final int index) {
Arrays.sort(strings, new Comparator<String>() {
@Override
public int compare(String s1, String s2)
{
String[] a1 = s1.split(" ");
String[] a2 = s2.split(" ");
String word1 = a1.length > index ? a1[index] : "";
String word2 = a2.length > index ? a2[index] : "";
return word1.compareTo(word2);
}
});
}
}
由于您要从接口覆盖方法
@Override
public int compare(String s1, String s2)
然后在方法签名中添加参数会违反接口中的声明方法...。
所以不可能...
Java是一种非常灵活的语言,因此您始终可以实现比较器的匿名实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.