在Java中,你可以通过实现`Comparator`接口来自定义数组的排序规则。以下是一些示例代码,展示了如何根据不同的需求自定义排序:
对基本数据类型数组排序
```java
import java.util.Arrays;
import java.util.Comparator;
public class CustomSort {
public static void main(String[] args) {
int[] numbers = {5, 3, 8, 1, 2};
// 升序排序
Arrays.sort(numbers, new Comparator
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
System.out.println(Arrays.toString(numbers)); // 输出: [1, 2, 3, 5, 8]
// 降序排序
Arrays.sort(numbers, new Comparator
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
System.out.println(Arrays.toString(numbers)); // 输出: [8, 5, 3, 2, 1]
}
}
对对象数组排序
```java
import java.util.Arrays;
import java.util.Comparator;
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + " " + age;
}
}
public class CustomSort {
public static void main(String[] args) {
Person[] people = {
new Person("Alice", 30),
new Person("Bob", 25),
new Person("Charlie", 35)
};
// 根据年龄升序排序
Arrays.sort(people, new Comparator
() { @Override
public int compare(Person o1, Person o2) {
return o1.age - o2.age;
}
});
System.out.println(Arrays.toString(people)); // 输出: [Bob 25, Alice 30, Charlie 35]
// 根据名字升序排序
Arrays.sort(people, new Comparator
() { @Override
public int compare(Person o1, Person o2) {
return o1.name.compareTo(o2.name);
}
});
System.out.println(Arrays.toString(people)); // 输出: [Alice 30, Bob 25, Charlie 35]
}
}
使用Java 8的Lambda表达式简化代码
```java
import java.util.Arrays;
public class CustomSort {
public static void main(String[] args) {
int[] numbers = {5, 3, 8, 1, 2};
// 升序排序
Arrays.sort(numbers, (o1, o2) -> o1 - o2);
System.out.println(Arrays.toString(numbers)); // 输出: [1, 2, 3, 5, 8]
// 降序排序
Arrays.sort(numbers, (o1, o2) -> o2 - o1);
System.out.println(Arrays.toString(numbers)); // 输出: [8, 5, 3, 2, 1]
}
}
对二维数组排序