list集合中对象根据固定的顺序进行排序
时间: 2023-07-22 13:12:45 浏览: 105
如果你想对一个 List 集合中的对象进行排序,可以使用 Collections.sort() 方法。该方法可以根据指定的 Comparator 对象来对集合中的元素进行排序。Comparator 接口中的 compare() 方法可以根据自定义规则来比较两个对象的大小。
以下是一个示例代码,演示如何按照固定的顺序对一个 List 集合中的对象进行排序:
```java
import java.util.*;
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return name + " - " + age;
}
}
class PersonComparator implements Comparator<Person> {
private final List<String> nameOrder;
public PersonComparator(List<String> nameOrder) {
this.nameOrder = nameOrder;
}
public int compare(Person p1, Person p2) {
int index1 = nameOrder.indexOf(p1.name);
int index2 = nameOrder.indexOf(p2.name);
return Integer.compare(index1, index2);
}
}
public class Main {
public static void main(String[] args) {
List<Person> persons = new ArrayList<>();
persons.add(new Person("Tom", 25));
persons.add(new Person("Alice", 30));
persons.add(new Person("Bob", 20));
persons.add(new Person("David", 27));
List<String> nameOrder = Arrays.asList("Alice", "Bob", "Tom", "David");
Comparator<Person> comparator = new PersonComparator(nameOrder);
Collections.sort(persons, comparator);
for (Person person : persons) {
System.out.println(person);
}
}
}
```
在上面的示例代码中,我们定义了一个 Person 类来表示人,其中包含姓名和年龄两个属性。我们还定义了一个 PersonComparator 类来实现 Comparator 接口,该类可以根据固定的顺序来比较两个 Person 对象的大小。在 Main 类的 main() 方法中,我们创建了一个 List 集合来存储 Person 对象,并使用 Arrays.asList() 方法创建了一个 List 来表示姓名的顺序。然后,我们创建了一个 PersonComparator 对象,并使用 Collections.sort() 方法对 List 集合进行排序。最后,我们遍历排好序的 List 集合,打印出每个 Person 对象的信息。
阅读全文