我有一个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中字符串的长度对此ArrayList进行排序。我希望列表按降序排列。
Input = ace, a, apple, cord
Output = apple, cord, ace, a
答案 0 :(得分:1)
从Java 8开始,您可以直接使用方法List.sort()
:
List<String> stringList = Arrays.asList("ace", "a", "apple", "cord");
stringList.sort(Comparator.comparingInt(String::length).reversed());
stringList
将以降序排列:
apple, cord, ace, a
答案 1 :(得分:0)
你需要实现一个比较器,如:
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;
}
}
}
然后你就像那样对ArrayList进行排序:
Collections.sort(matches, new stringLengthComparator());
答案 2 :(得分:0)
您可能需要List<String>
,而不是List<String[]>
作为输入。
为了对列表进行排序,您需要使用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);
答案 3 :(得分:0)
这就是你要如何使用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]
P.S。这已经过测试,它可以按照您想要的方式工作。
答案 4 :(得分:0)
这适用于 Java 8。
Collections.sort(dictionary, (a, b)->Integer.compare(a.length(), b.length()));