题解 | #明明的随机数#

明明的随机数

https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0

1. 使用Stream流

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        Set<Integer> set = new HashSet<>();
        while(n -- > 0){
            set.add(sc.nextInt());
        }

        set.stream().sorted().forEach(x -> System.out.println(x));
    }
}

在Java 8及更高版本中,Set 接口中引入了 stream() 方法,允许对其元素进行流式处理,包括排序。所以你的代码确实可以实现排序。

在你的代码中,set.stream().sorted().forEach(x -> System.out.println(x)) 这一行使用了流式处理来对 Set 中的元素进行排序,并逐个输出。

对于小规模的数据集,这样的实现方式是可以接受的。然而,在处理大规模数据时,可能会出现性能问题,因为它需要将所有元素加载到内存中并进行排序。而且,由于 HashSet 是无序的,排序后的顺序可能会受到哈希函数的影响。

对于大规模数据或者需要稳定排序的情况,更好的选择是使用 TreeSet 或者将 Set 转换为 List,然后使用 Collections.sort() 进行排序。这种方法更加高效和可控。

2. 使用迭代器

import java.util.*;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //获取个数
        int num = sc.nextInt();
        //创建TreeSet进行去重排序
        TreeSet set = new TreeSet();
        //输入
        for(int i =0 ; i < num ;i++){
            set.add(sc.nextInt());
        }

        //输出
        Iterator iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 16:22
主包是26应届生,投大厂简历一直过不了初筛,想问问大家有必要花钱改简历吗
Java抽象带篮子:我之前专门发个帖子说不要付费改简历的,里面还详细写了简历怎么写,你可以去看看
点赞 评论 收藏
分享
05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务