Spliterator
用于遍历和分割源元素的对象。
方法介绍
tryAdvance
// 如果存在元素,则执行Consumer并返回true并移至下一个元素。 如果没有元素返回falseprivate static void tryAdvance() {List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));Spliterator<String> stringSpliterator = list.spliterator();int a = 0;while (stringSpliterator.tryAdvance(System.out::println)){System.out.println(++a);}}
trySplit
// 将Spliterator拆分成多个来并行处理private static void trySplit() {List<String> values = new ArrayList<>(Arrays.asList("1", "2", "3", "4", "5", "6"));Spliterator<String> firstSpliterator = values.spliterator();Spliterator<String> secondSpliterator = firstSpliterator.trySplit();Spliterator<String> thirdSpliterator = firstSpliterator.trySplit();System.out.println("firstSpliterator : ");while (firstSpliterator.tryAdvance(System.out::println)){}System.out.println("secondSpliterator : ");while (secondSpliterator.tryAdvance(System.out::println)){}System.out.println("thirdSpliterator : ");while (thirdSpliterator.tryAdvance(System.out::println)){}}
forEachRemaining
// 剩余的元素传递给一个函数private static void forEachRemaining() {List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c", "d", "e", "f"));Spliterator<String> firstSpliterator = list.spliterator();Spliterator<String> secondSpliterator = firstSpliterator.trySplit();firstSpliterator.forEachRemaining(System.out::println);System.out.println("-------");secondSpliterator.forEachRemaining(System.out::println);}
estimateSize
private static void estimateSizeAndCharacteristics() {List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c", "d", "e", "f"));Spliterator<String> firstSpliterator = list.spliterator();// estimateSize表示Splirerator中待处理的元素.// characteristics表示这个Spliterator的特征,Spliterator有8大特征.// 调用一次trySplit()后,将list分成了两部分,firstSpliterator为三条 ,secondSpliterator为两条System.out.println("before forEachRemaining: " + firstSpliterator.estimateSize());// 这个Characteristics=16464,转换为16进制:Ox4050 = ORDERED or SIZED or SUBSIZED 这三个的或运算。System.out.println("Characteristics " + firstSpliterator.characteristics());firstSpliterator.forEachRemaining(System.out::println);// 调用forEachRemaining后,estimateSize变为0,表示所有的元素都已经被处理完毕。System.out.println("after forEachRemaining" + firstSpliterator.estimateSize());}
Spliterator相关推荐
- 在Java中使用Spliterator
介绍: Java中的迭代器用于遍历给定源的元素. Java中的Spliterator是四个可用的Java迭代器之一-Iterator ,Enumeration, ListIterator和Splite ...
- java set spliterator_Java TreeSet spliterator()方法
Java TreeSet spliterator()方法 java.util.TreeSet.spliterator() 方法用于拆分set元素,并逐个迭代它们. 1 语法 public Splite ...
- java 8 stream中的Spliterator简介
文章目录 简介 tryAdvance trySplit estimateSize characteristics 举个例子 总结 java 8 stream中的Spliterator简介 简介 Spl ...
- java set spliterator_Java HashSet spliterator() 方法
Java HashSet spliterator() 方法 spliterator() 用于在HashSet中的元素上创建后绑定和故障快速的Spliterator.将后期绑定的Spliterator绑 ...
- 今天读了JDK1.8源码,知道了并行迭代器Spliterator
在JDK1.8的ArrayList里面偶然看到了这个内部类,同时对比了1.7的版本,发现1.7并没有这后面的东西, 随着好奇心,就搜了一下下,发现很有意思~ 也查了一些资料,如下总结: Splite ...
- java8的spliterator
Java8中容器在创建一个stream()流的过程中首先会创建一个相应的spliterator来作为迭代器来使用,这个迭代器支持并行迭代. 根据每个容器不同的性质,这个迭代器也对应了相应的特征量. 例 ...
- java spliterator,Java 8 之Stream Spliterator
定义 用于遍历和分割"源"元素的对象. 数据源 Spliterator的元素来源可能是一个数组,一个集合,一个IO通道,一个生成函数. 处理数据源的方式 Spliterator可以 ...
- java spliterator_java 8 stream中的Spliterator简介
java 8 stream中的Spliterator简介 简介 Spliterator是在java 8引入的一个接口,它通常和stream一起使用,用来遍历和分割序列. 只要用到stream的地方都需 ...
- Collection如何转成stream以及Spliterator对其操作的实现
Collection如何转成stream 在java 1.8中,Collection新增了一个default方法stream(),他可以将集合转换成流,那么这节我将会深入源码看看具体过程是如何. Co ...
最新文章
- mysql免费框架_瞧一瞧~看一看~MyCat架构剖析免费不要钱!(上)
- workflow java_workflow java实现的activity工作流实例 Develop 238万源代码下载- www.pudn.com...
- 软件史上最伟大的十大程序员
- mysql cluster 用户_mysql cluster统一用户权限
- 力扣买卖股票系列总结
- mysql alter 语句用法,添加、修改、删除字段等
- RStudio 的使用
- android stuido 快捷键
- 【剑指offer】29、顺时针打印矩阵
- Rails2.2新特性:本地化与国际化
- Pyqt之QApplication
- 《OpenCV3编程入门》学习笔记九:直方图与匹配
- 武士2复仇 Unity游戏工程+源码
- 以客户的名义,宏杉科技“存储七项式”律己律人
- winhex 使用教程
- Windows如何刷新DNS缓存
- mysql安装包msi_【MySQL】MySQL之MySQL5.7安装包(msi文件)在Windows8下安装
- 解决mysql导出scv文件乱码、蹿行的问题
- 计算机网络协议名词解析,网络协议名词解释
- springBoot使用poi导出Excel