本文已参与「新人创作礼」活动,一起开启掘金创作之路。
声明:版权归本人所有,违者必究。
转载请注明来源 https://juejin.cn/post/7112658873902694413
描述
明明生成了NN个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。
数据范围: 1≤n≤1000 ,输入的数字大小满足 1≤val≤500
输入描述:
第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。
输出描述:
输出多行,表示输入数据处理后的结果
代码:
import java.util.Scanner;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
TreeSet<Integer> set = new TreeSet<>();
for (int i = 0; i < n; i++) {
int randomInt = scanner.nextInt(500);
set.add(randomInt);
}
set.forEach(s-> System.out.println(s));
}
}
个人总结:
1、这个题目出的不好,输入只需要一个参数即可,通过程序自动生成随机数,而不是一个个的去让用户输入。 2、TreeSet特性:有序性、唯一性 3、如果此题目改为将数值从大到小排序,则代码需要修改为,即创建TreeSet时传入比较器:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
TreeSet<Integer> set = new TreeSet<>((s1,s2)->s2-s1);
for (int i = 0; i < n; i++) {
int randomInt = scanner.nextInt();
set.add(randomInt);
}
set.forEach(s-> System.out.println(s));
}