以下是按字符串数组对对象数组进行排序的解决方法的代码示例:
import java.util.Arrays;
import java.util.Comparator;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Main {
public static void main(String[] args) {
String[] names = {"John", "Alice", "Bob", "David"};
Person[] persons = {new Person("Alice", 25), new Person("Bob", 30), new Person("John", 20), new Person("David", 35)};
// 按照字符串数组顺序排序对象数组
Arrays.sort(persons, Comparator.comparing(person -> {
int index = Arrays.asList(names).indexOf(person.getName());
return index == -1 ? Integer.MAX_VALUE : index;
}));
// 打印排序后的对象数组
for (Person person : persons) {
System.out.println(person);
}
}
}
输出结果为:
Person{name='John', age=20}
Person{name='Alice', age=25}
Person{name='Bob', age=30}
Person{name='David', age=35}
在上面的代码中,我们定义了一个Person
类,该类有一个name
(姓名)和age
(年龄)属性。然后,我们创建了一个字符串数组names
和一个对象数组persons
,数组names
中存储了按照我们想要的顺序排列的姓名,数组persons
中存储了对应的Person
对象。
我们使用Arrays.sort
方法对persons
数组进行排序,通过传入一个Comparator
对象来指定排序规则。在Comparator.comparing
方法中,我们使用Arrays.asList(names).indexOf(person.getName())
来获取当前Person
对象的姓名在字符串数组names
中的索引位置,然后根据索引位置进行排序。如果姓名在字符串数组中不存在,则将其排序到最后。
最后,我们遍历排序后的persons
数组并打印结果。