题目:
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算 机生成了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
