可以使用Java的Comparator接口来实现按整数字段对Java对象数组进行排序,如果它们相同,则按另一个整数值进行排序。以下是一个示例代码:
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
// 创建对象数组
Person[] persons = new Person[5];
persons[0] = new Person(3, 1);
persons[1] = new Person(2, 2);
persons[2] = new Person(1, 3);
persons[3] = new Person(2, 4);
persons[4] = new Person(3, 5);
// 按整数字段和另一个整数字段进行排序
Arrays.sort(persons, new PersonComparator());
// 打印排序结果
for (Person person : persons) {
System.out.println(person);
}
}
static class Person {
private int field1;
private int field2;
public Person(int field1, int field2) {
this.field1 = field1;
this.field2 = field2;
}
public int getField1() {
return field1;
}
public int getField2() {
return field2;
}
@Override
public String toString() {
return "Person{" +
"field1=" + field1 +
", field2=" + field2 +
'}';
}
}
static class PersonComparator implements Comparator {
@Override
public int compare(Person p1, Person p2) {
// 先按field1进行排序
int result = Integer.compare(p1.getField1(), p2.getField1());
// 如果field1相同,则按field2进行排序
if (result == 0) {
result = Integer.compare(p1.getField2(), p2.getField2());
}
return result;
}
}
}
在上面的示例中,我们创建了一个Person类,它包含两个整数字段field1和field2。然后,我们创建了一个PersonComparator类,它实现了Comparator接口,并根据field1和field2的值进行排序。在主方法中,我们创建了一个Person对象数组,并使用Arrays.sort()方法进行排序。最后,我们打印排序后的结果。输出结果如下:
Person{field1=1, field2=3}
Person{field1=2, field2=2}
Person{field1=2, field2=4}
Person{field1=3, field2=1}
Person{field1=3, field2=5}
可以看到,对象数组按照field1字段进行排序,如果field1相同,则按照field2字段进行排序。
上一篇:按整数值排序后按特定顺序排序对象