有人可以举一个使用比较器对 Java 中的数组进行排序的示例和输出吗?我知道我需要使用public static void sort(List list, Comparator c);
,但是比较器如何更改排序顺序?
3 回答
4
通常你可以实现Comparable
并将 List 传递给sort()
方法。但是,如果您需要使用 aComparator
而不是这里是一个完整的例子:
public static void main(String args[]) {
List<ExampleItem> examples = new LinkedList<ExampleItem>();
//Build List
Collections.sort(examples, new ExampleCompartor());//Sort with your comparator
}
//Custom Class to sort
class ExampleItem{
private int data;
}
//Compartor
static class ExampleCompartor implements Comparator<ExampleItem>{
@Override
public int compare(ExampleItem ex1, ExampleItem ex2) {
return ex1.data - ex2.data;
}
}
于 2011-02-02T01:41:37.047 回答
2
public class CompSample {
public static int countVowels(String s) {
return s.replaceAll("[^aeiouAEIOU]", "").length();
}
public static class NumberOfVowelsComparator implements Comparator<String> {
public int compare(String o1, String o2) {
int o1vowels = countVowels(o1);
int o2vowels = countVowels(o2);
return o2vowels - o1vowels;
}
}
public static void main(String[] args) {
String[] words = {"one", "two", "tree", "four"};
List<String> sortedWords = Collections.sort(Arrays.asList(words),
new NumberOfVowelsComparator());
System.out.println(sortedWords);
}
}
于 2011-02-02T01:43:48.590 回答
1
这是如何使用比较器进行排序的一个很好的示例。http://www.javadeveloper.co.in/java-example/java-comparator-example.html
于 2011-02-02T01:32:04.443 回答