TreeSet去重排序(华为研发工程师编程题)

    xiaoxiao2021-03-26  23

    题目:

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算 机生成了N11000之间的随机整数(N1000),对于其中重复的数字,只保 留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些 数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去 重”与“排序”的工作。

    为方便看出效果(多出一些重复的随机数),将随机数范围改小,个数增多

    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 ----原始数据---- 1010210134229、共计10个数字 ----结果---- 1010210134229、共计10个数字 ②return -1 请输入正整数N 10 ----原始数据---- 108981751075、共计10个数字 ----结果---- 571057189810、共计10个数字 ③return 0(把后面的数字都当成重复的了,差值为0) 请输入正整数N 10 ----原始数据---- 8214756921、共计10个数字 ----结果---- 8、共计1个数字

    原题链接: https://www.nowcoder.com/question/next?pid=1088888&qid=36846&tid=6451656

    转载请注明原文地址: https://ju.6miu.com/read-658530.html

    最新回复(0)