程题:编写一个java程序(注:所有代码写在一个文件里),要求如下: 有如下数字字符串: String str="12 34 32 22 32 33 53 42 4 34 33 22 11 23 43 3";数字字符之间用空格分割。 (1) 使用Scanner类将str中的数字转换并生成到集合ArrayList中; (2) 采用匿名类实现排序(从大到小),并输出。 提示: 比较的泛型接口为:Comparator<Integer> 实现的接口方法为:public int compare(Integer o1, Integer o2);
时间: 2024-03-15 22:46:39 浏览: 15
下面是实现上述要求的Java程序:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String str = "12 34 32 22 32 33 53 42 4 34 33 22 11 23 43 3";
Scanner scanner = new Scanner(str);
ArrayList<Integer> list = new ArrayList<Integer>();
while (scanner.hasNextInt()) {
list.add(scanner.nextInt());
}
scanner.close();
Collections.sort(list, new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
System.out.println(list);
}
}
```
程序的思路如下:
首先,定义一个字符串 `str`,其中包含了一些数字,数字之间用空格分割。
然后,创建一个 `Scanner` 对象,将字符串 `str` 转换成数字并存储到 `ArrayList` 中。
接下来,使用 `Collections.sort()` 方法对 `ArrayList` 进行排序,排序规则是按照从大到小的顺序。
最后,输出排序后的结果。
这里需要注意的是,我们使用了匿名类来实现 `Comparator` 接口中的 `compare()` 方法。在 `compare()` 方法中,我们只需要比较两个整数的大小关系,并返回一个整数值即可。如果返回值小于0,则表示第一个整数小于第二个整数;如果返回值等于0,则表示两个整数相等;如果返回值大于0,则表示第一个整数大于第二个整数。根据这个返回值,`sort()` 方法就可以实现排序了。