【问题标题】:Sort Collections in Java在 Java 中对集合进行排序
【发布时间】:2011-06-19 16:27:57
【问题描述】:

有人可以举一个使用比较器在Java中对数组进行排序的示例和输出吗? 我知道我需要使用public static void sort(List list, Comparator c);,但是比较器如何更改排序顺序?

【问题讨论】:

标签: java arrays list sorting comparator


【解决方案1】:

通常您可以只实现Comparable 并将列表传递给sort() 方法。但是,如果您需要使用 Comparator,这里有一个完整的示例:

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;
    }
}

【讨论】:

  • 我认为您的意思是“实现” Comparable,而不是“覆盖”它。
【解决方案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);
    }
}

【讨论】:

    【解决方案3】:

    这是一个很好的例子,说明如何使用比较器进行排序。 http://www.javadeveloper.co.in/java-example/java-comparator-example.html

    【讨论】:

      最近更新 更多