Java如何遍历Set呢?

乔欣 Java经验 发布时间:2023-02-20 23:03:30 阅读数:14403 1
   下文笔者讲述使用java代码遍历Set集合的五种方法分享,如下所示

方式1:迭代器方法

/**
   /**
     * 1 iterator
     * 迭代器
     *
     * @param set
     */
    public static void iteratorTest(Set<Integer> set) {
        System.out.println("1 iterator 遍历方法");

        long start = System.currentTimeMillis();
        set.forEach(item -> {
            // System.out.println(item);
        });
        System.out.println("耗时 time=\t" + (System.currentTimeMillis() - start));

        StringBuilder sb = new StringBuilder(set.size());
        for (Iterator<Integer> iterator = set.iterator(); iterator.hasNext(); ) {
            sb = sb.append(iterator.next()).append(",");
        }
        System.out.println(sb.length());

        /**
         * while 循环写法
         */
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()) {
            iterator.next();
        }

    }
  该方法用到了Iterator迭代器,略显繁琐,请考虑使用增强for遍历的方法

方式2:增强for遍历

    /**
     * 2 增强for循环
     *
     * @param set
     */
    public static void forTest(Set<Integer> set) {
        System.out.println("2 增强for循环");
        long start = System.currentTimeMillis();

//        StringBuilder sb = new StringBuilder(set.size());
        for (int item : set) {
//            sb = sb.append(item).append(",");
        }
//        System.out.println(sb);
        System.out.println("耗时 time=\t" + (System.currentTimeMillis() - start));
    }

  温馨提示:在对set集合成进行遍历的时候,请勿同时执行修改操作,比如删除,这样会导致程序崩溃。

方式3:forEach方法

  set.forEach 自java 8 才支持。forEach 效率最低,不推荐!

    /**
     * 3 forEach 遍历方式
     * forEach 最慢不推荐 java8 Lambda
     * 注意:在对set集合成进行遍历的时候不能同时进行修改操作,比如删除,这样会导致崩溃。
     *
     * @param set
     */
    public static void forEachTest(Set<Integer> set) {
        System.out.println("3 forEach 遍历方式");
        long start = System.currentTimeMillis();
        set.forEach(item -> {
//            System.out.println(item);
        });
        System.out.println("耗时 time=\t" + (System.currentTimeMillis() - start));

    }

方式4:stream.forEach方法

  set.stream().forEach也是在java 8 才支持。

    /**
     * 4 stream forEach
     * stream foreach java8 特有
     *
     * @param set
     */
    public static void streamForEachTest(Set<Integer> set) {
        System.out.println("4 stream forEach");
        long start = System.currentTimeMillis();
        set.stream().forEach(item -> {
            // System.out.println(item);
        });
        System.out.println("耗时 time=\t" + (System.currentTimeMillis() - start));

    }

方式5: forEachRemaining方法

  此方法也是在java 8 才支持,主要用于继续输出集合中剩余的元素。这里用于遍历全部元素:

   /**
     * 5 forEachRemaining
     *
     * @param set
     */
    public static void forRemainingTest(Set<Integer> set) {
        System.out.println("5 forEachRemaining");
        int i = 0;
        long start = System.currentTimeMillis();
        Iterator<Integer> iterator = set.iterator();
//        set.iterator().forEachRemaining(value -> System.out.print(value + " "));
        iterator.forEachRemaining(
            new Consumer<Integer>() {
                @Override
                public void accept(Integer value) {
//                        System.out.println(value);
                }
            }

        );
        System.out.println("耗时 time=\t" + (System.currentTimeMillis() - start));
    }
	
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202302/16769056745858.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者