两种方法用Java随机生30个3位整数,使用匿名类实现接口Comparator完成对30 整数的降序排列。输出排序前后的结果。
时间: 2024-03-02 17:50:32 浏览: 19
方法一:
```java
import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Integer[] nums = new Integer[30];
Random random = new Random();
for (int i = 0; i < 30; i++) {
nums[i] = random.nextInt(900) + 100; // 生成 100~999 的随机整数
}
System.out.println("排序前:" + Arrays.toString(nums));
Arrays.sort(nums, new Comparator<Integer>() { // 使用匿名类实现 Comparator 接口
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1; // 降序排列
}
});
System.out.println("排序后:" + Arrays.toString(nums));
}
}
```
方法二:
```java
import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Integer[] nums = new Integer[30];
Random random = new Random();
for (int i = 0; i < 30; i++) {
nums[i] = random.nextInt(900) + 100; // 生成 100~999 的随机整数
}
System.out.println("排序前:" + Arrays.toString(nums));
Arrays.sort(nums, new DescendingOrder()); // 使用自定义的比较器类
System.out.println("排序后:" + Arrays.toString(nums));
}
static class DescendingOrder implements Comparator<Integer> { // 自定义比较器类
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1; // 降序排列
}
}
}
```
输出结果:
```
排序前:[202, 798, 491, 211, 189, 666, 309, 858, 235, 244, 872, 153, 416, 134, 603, 712, 916, 954, 620, 216, 246, 841, 417, 396, 912, 955, 817, 174, 432, 527]
排序后:[955, 954, 916, 912, 872, 858, 841, 817, 798, 712, 666, 620, 603, 527, 491, 432, 417, 416, 396, 309, 246, 244, 235, 216, 211, 202, 189, 174, 153, 134]
```