1
    public class Prerequisites {

        private class Course implements Comparator<Course> {
            public String name;
            public LinkedList<Course> requiredFor;
            public LinkedList<Course> prerequisites;

            Course(String name) {
                requiredFor = new LinkedList<Course>();
                prerequisites = new LinkedList<Course>();
                this.name = name;
            }

            @Override
            public int compare(Course c0, Course c1) {
                Pattern p = Pattern.compile("[A-Z]*");
                Matcher matcher0 = p.matcher(c0.name);
                Matcher matcher1 = p.matcher(c1.name);
                matcher0.find();
                matcher1.find();
                int courseNumber0 = Integer.parseInt(c0.name.substring(matcher0.end(),c0.name.length()));
                int courseNumber1 = Integer.parseInt(c1.name.substring(matcher1.end(),c1.name.length()));
                if(courseNumber0 > courseNumber1) {
                    return 1;
                }
                else if(courseNumber0 < courseNumber1) {
                    return -1;
                }
                else {
                    return matcher0.group().compareTo(matcher1.group());
                }
            }

            @Override
            public String toString(){
                return this.name;
            }
        }
    public void compare(String args[]) {
        Course c0 = new Course("CSE110");
        Course c1 = new Course("DSE110");
        LinkedList<Course> courses = new LinkedList<Course>();
        courses.add(c0);
        courses.add(c1);
        **Collections.sort(courses);** //gives compiler error

    }
 }

この内部クラスに Collections.sort() を追加しても機能しないのはなぜですか? コンパイラエラーからそれを理解することはできません。

4

3 に答える 3

5

ではなく、おそらく実装するComparableComparatorつもりでした。

それCollections#sortメソッドが期待するものです:

public static <T extends Comparable<? super T>> void sort(List<T> list)
于 2012-09-16T13:04:11.277 に答える
3

Comparableではなく、実装する必要がありますComparator

于 2012-09-16T13:04:39.390 に答える
1

Collections.sort(courses);

-上記の場合、実装したいものは、実装しjava.lang.Comparableたいインターフェイスであり、java.util.Comparator インターフェイスではありません。

-さらにComparable Interface、1 つの属性のみに基づいてアイテムをソートする必要がある場合に使用されます。

ただし、複数の Attribute に基づいてアイテムを並べ替えたい場合は、 を実装してくださいjava.util.Comparator Interface

Collections.sort(List l, Comparator<T> t);

于 2012-09-16T14:18:31.320 に答える