Java如何遍历Set呢?
下文笔者讲述使用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)); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。