Java的Collections.sort()方法使我的列表未排序。

bluesky1年前 ⋅ 133 阅读

ChatGPT的回答仅作参考:

可能是因为您没有正确实现Comparable接口或使用Comparator来指定排序规则。在使用Collections.sort()方法之前,您需要确保您的元素类实现了Comparable接口,并重写了compareTo()方法来定义排序规则。如果您的元素类没有实现Comparable接口,您可以创建一个实现Comparator接口的类,并在调用Collections.sort()方法时将其作为参数传递,以指定排序规则。

以下是一个示例,演示如何使用Comparable接口和Comparator来对列表进行排序:

1. 使用Comparable接口:

```java
public class Person implements Comparable<Person> {
    private String name;
    private int age;

    // constructor, getters, setters

    @Override
    public int compareTo(Person other) {
        return this.age - other.age;
    }
}

// 在主程序中使用
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Charlie", 20));

Collections.sort(people);

// 现在people列表将按照年龄升序排序
```

2. 使用Comparator:

```java
public class PersonComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        return p1.getAge() - p2.getAge();
    }
}

// 在主程序中使用
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Charlie", 20));

Collections.sort(people, new PersonComparator());

// 现在people列表将按照年龄升序排序
```

请确保在使用Collections.sort()方法之前,您的列表中的元素类已经正确实现了Comparable接口或您已经提供了正确的Comparator实现。

全部评论: 0

    相关推荐