从键盘接受一个长度为n的数组
本文第一种方法使用集合时对其泛化,第二种方法则没有
有关泛化的知识请读者自行查阅
int数组转Integer数组的方法
//数组元素转换为数值流
IntStream stream = Arrays.stream(nums);
//流中元素全部装箱
Stream<Integer> st = stream.boxed();
//将流转换为数组
Integer[] num = st.toArray(Integer[]::new);
1、使用匿名类
int[] nums = new int[10];
int n = cin.nextInt();
for(int i = 0; i < n; i++) {
nums[i] = cin.nextInt();
}
//数组元素转换为数值流
IntStream stream = Arrays.stream(nums);
//流中元素全部装箱
Stream<Integer> st = stream.boxed();
//将流转换为数组
Integer[] num = st.toArray(Integer[]::new);
Arrays.sort(num, new Comparator<Integer>() {
public int compare(Integer a, Integer b) {
return b - a;
}
});
2、实现Comparator接口
这种方法和第一种方法类似
class MyComparator implements Comparator {
public int compare(Object a, Object b) {
return (Integer)b - (Integer)a;
}
}
int[] nums = new int[10];
int n = cin.nextInt();
for(int i = 0; i < n; i++) {
nums[i] = cin.nextInt();
}
//数组元素转换为数值流
IntStream stream = Arrays.stream(nums);
//流中元素全部装箱
Stream<Integer> st = stream.boxed();
//将流转换为数组
Integer[] num = st.toArray(Integer[]::new);
MyComparator cmp = new MyComparator();
Arrays.sort(num, cmp);
3、实现Comparable接口的对象的集合的自然顺序相反
int[] nums = new int[10];
int n = cin.nextInt();
for(int i = 0; i < n; i++) {
nums[i] = cin.nextInt();
}
//数组元素转换为数值流
IntStream stream = Arrays.stream(nums);
//流中元素全部装箱
Stream<Integer> st = stream.boxed();
//将流转换为数组
Integer[] num = st.toArray(Integer[]::new);
Arrays.sort(num, Collections.reverseOrder());