去重与排序(Java)

去重与排序(Java)

【问题描述】
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。Input Param n 输入随机数的个数 inputArray n 个随机整数组成的数组 Return Value OutputArray 输出处理后的随机整数
【输入形式】输入多行,先输入随机整数的个数n,再输入相应个数的整数
输出形式】输出一行,处理后的结果
【样例输入】
11
10 20 40 32 67 40 20 89 300 400 15
【样例输出】
10 15 20 32 40 67 89 300 400

问题分析

1.本题比较简单,之所以写出来是因为让大家活用已有的数据结构
2.大家都知道set有去重的效果,但可能不知道set的Treeset不仅可以去重,还可以对内部元素进行排序。
下图列出了集合的分类。

3.treeset使用方法介绍
从java jdk文档,可以获知treeset的构造器中有一个根据指定构造器进行排序。
在这里插入图片描述
基础的写法

Set<Integer> set=new TreeSet<>(new Comparator<>() {
    
    
			@Override
			public int compare(Integer o1, Integer o2) {
    
    				
				return o1.compareTo(o2);//升序排序
				//return -o1.compareTo(o2);//降序排序
			}		
		});

进阶写法–>lambda表达式,可以将上述代码简写

具体代码

package test3;

import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class Sort {
    
    
	public static void main(String[] args) {
    
    
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();
		Set<Integer> set = new TreeSet<>((o1, o2) -> -o2.compareTo(o1));//也是升序
		for (int i = 0; i < n; i++) {
    
    
			set.add(in.nextInt());
		}
		for (Integer integer : set) {
    
    //只需遍历的话,增强for循环更好用,避免了迭代器的使用
			System.out.print(integer+" ");
		}
		in.close();
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_45761055/article/details/115414470
今日推荐