题目:
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算
机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保
留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些
数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去
重”与“排序”的工作。
为方便看出效果(多出一些重复的随机数),将随机数范围改小,个数增多
package com.test;
import java.util.Scanner;
import java.util.TreeSet;
public class MyTest {
public static void main(String[] args) {
int m = 10;//随机数产生的范围
System.out.println("请输入正整数N");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
//存放去重排序后的数据
TreeSet<Integer> set = new TreeSet<Integer>();
//存放去重排序前的数据
Integer[] array = new Integer[n];
if (1 <= n) {
for (int i = 0; i < n; i++) {
//产生随机数
int v = (int) (1 + Math.random() * m);
array[i] = v;
set.add(v);
}
}
System.out.println("----原始数据----");
for (int i : array) {
System.out.print(i + "、");
}
System.out.println("共计" + array.length + "个数字");
System.out.println("----去重排序结果----");
for (Integer i : set) {
System.out.print(i + "、");
}
System.out.println("共计" + set.size() + "个数字");
}
}
结果:
请输入正整数N
12
----原始数据----
5、9、6、3、1、4、7、9、5、5、6、4、共计12个数字
----去重排序结果----
1、3、4、5、6、7、9、共计7个数字
TreeSet排序:
一、数据大小排序
TreeSet<Integer> set = new TreeSet<Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
//从大到小:
return o2-o1;
//从小到大:
//return o1-o2;
}
});
二、数据存放顺序
TreeSet<Integer> set = new TreeSet<Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
//顺序
return 1;
//倒序
//return -1;
//只显示第一个
//return 0;
}
});
结果:
①return 1
请输入正整数N
10
----原始数据----
10、10、2、10、1、3、4、2、2、9、共计10个数字
----结果----
10、10、2、10、1、3、4、2、2、9、共计10个数字
②return -1
请输入正整数N
10
----原始数据----
10、8、9、8、1、7、5、10、7、5、共计10个数字
----结果----
5、7、10、5、7、1、8、9、8、10、共计10个数字
③return 0(把后面的数字都当成重复的了,差值为0)
请输入正整数N
10
----原始数据----
8、2、1、4、7、5、6、9、2、1、共计10个数字
----结果----
8、共计1个数字
原题链接:
https://www.nowcoder.com/question/next?pid=1088888&qid=36846&tid=6451656