java中按sting长度排序ArrayList
我有一个数组列表java中按sting长度排序ArrayList,java,sorting,arraylist,Java,Sorting,Arraylist,我有一个数组列表 ArrayList<String[]> matches = new ArrayList<String[]>(); Collections.sort(matches, new Comparator<String>() { @Override public int compare(String word1, String word2) { return word2.length() - word1.length(
ArrayList<String[]> matches = new ArrayList<String[]>();
Collections.sort(matches, new Comparator<String>() {
@Override
public int compare(String word1, String word2) {
return word2.length() - word1.length();
}
});
您需要实现一个比较器,如下所示:
class stringLengthComparator implements Comparator<String> {
public int compare(String o1, String o2) {
if (o1.length() > o2.length()) {
return 1;
} else if (o1.length() < o2.length()) {
return -1;
} else {
return 0;
}
}
}
Collections.sort(matches, new stringLengthComparator());
List
,而不是List
java.util.Collections.sort
方法和按长度比较元素的自定义比较器:
List<String> list = Arrays.asList(
"ace", "a", "apple", "cord"
);
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.length() - o1.length();
}
});
System.out.println(list);
List List=Arrays.asList(
“a”,“a”,“苹果”,“绳索”
);
Collections.sort(list,newcomparator(){
@凌驾
公共整数比较(字符串o1、字符串o2){
返回o2.length()-o1.length();
}
});
系统输出打印项次(列表);
这正是使用ArrayList执行程序的方式。确保导入正确的java.util类
public static void main(String args[])
{
String matches[] = {"ace", "a", "apple", "cord"};
List<String> list = new ArrayList<String>();
Collections.addAll(list, matches);
Collections.sort(list, new Comparator<String>(){
public int compare(String o1, String o2)
{
return o1.length() - o2.length();
}
});
Collections.reverse(list);
System.out.println(list);
}
Input: "ace", "a", "apple", "cord"
Output: [apple, cord, ace, a]
publicstaticvoidmain(字符串参数[])
{
字符串匹配[]={“ace”、“a”、“apple”、“cord”};
列表=新的ArrayList();
Collections.addAll(列表、匹配项);
Collections.sort(list,newcomparator(){
公共整数比较(字符串o1、字符串o2)
{
返回o1.length()-o2.length();
}
});
收款。反向(列表);
系统输出打印项次(列表);
}
输入:“ace”、“a”、“apple”、“cord”
输出:[苹果、线缆、ace、a]
另外,这已经过测试,它的工作方式完全符合您的要求。自Java 8以来,您可以直接使用方法
List.sort()
:
这适用于Java8
Collections.sort(dictionary, (a, b)->Integer.compare(a.length(), b.length()));
ace,a,apple,cord
只是ArrayList
,而不是ArrayList
。请解释您迄今为止为解决此问题所采取的步骤。您试图解决此问题的地方是哪里?集合。排序
,而不是数组。排序
List<String> stringList = Arrays.asList("ace", "a", "apple", "cord");
stringList.sort(Comparator.comparingInt(String::length).reversed());
apple, cord, ace, a
Collections.sort(dictionary, (a, b)->Integer.compare(a.length(), b.length()));