java int数组转Integer数组及对数组降序

从键盘接受一个长度为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()); 
posted @ 2021-04-07 22:53  AC_沫离  阅读(751)  评论(0)    收藏  举报