题目描述:
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
Java实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
ArrayList<Integer> inArr = new ArrayList<>();
int tmp = 0;
int i = 0;
while(i < n) {
tmp = sc.nextInt();
if (inArr.contains(tmp)){
i++;
continue;
}
else {
inArr.add(tmp);
i++;
}
}
Collections.sort(inArr);
for (int a : inArr) {
System.out.println(a);
}
}
}
}
知识点:
- 最外层的while循环处理多个case的情况,一定要注意
- 使用数组循环去重和set去重会导致超时
- 使用ArrayList类的contains()方法边输入边去重
- 最后使用Collections类的sort()方法对集合对象进行排序