用于遍历和分割源元素的对象。

方法介绍

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相关推荐

  1. 在Java中使用Spliterator

    介绍: Java中的迭代器用于遍历给定源的元素. Java中的Spliterator是四个可用的Java迭代器之一-Iterator ,Enumeration, ListIterator和Splite ...

  2. java set spliterator_Java TreeSet spliterator()方法

    Java TreeSet spliterator()方法 java.util.TreeSet.spliterator() 方法用于拆分set元素,并逐个迭代它们. 1 语法 public Splite ...

  3. java 8 stream中的Spliterator简介

    文章目录 简介 tryAdvance trySplit estimateSize characteristics 举个例子 总结 java 8 stream中的Spliterator简介 简介 Spl ...

  4. java set spliterator_Java HashSet spliterator() 方法

    Java HashSet spliterator() 方法 spliterator() 用于在HashSet中的元素上创建后绑定和故障快速的Spliterator.将后期绑定的Spliterator绑 ...

  5. 今天读了JDK1.8源码,知道了并行迭代器Spliterator

    在JDK1.8的ArrayList里面偶然看到了这个内部类,同时对比了1.7的版本,发现1.7并没有这后面的东西, 随着好奇心,就搜了一下下,发现很有意思~  也查了一些资料,如下总结: Splite ...

  6. java8的spliterator

    Java8中容器在创建一个stream()流的过程中首先会创建一个相应的spliterator来作为迭代器来使用,这个迭代器支持并行迭代. 根据每个容器不同的性质,这个迭代器也对应了相应的特征量. 例 ...

  7. java spliterator,Java 8 之Stream Spliterator

    定义 用于遍历和分割"源"元素的对象. 数据源 Spliterator的元素来源可能是一个数组,一个集合,一个IO通道,一个生成函数. 处理数据源的方式 Spliterator可以 ...

  8. java spliterator_java 8 stream中的Spliterator简介

    java 8 stream中的Spliterator简介 简介 Spliterator是在java 8引入的一个接口,它通常和stream一起使用,用来遍历和分割序列. 只要用到stream的地方都需 ...

  9. Collection如何转成stream以及Spliterator对其操作的实现

    Collection如何转成stream 在java 1.8中,Collection新增了一个default方法stream(),他可以将集合转换成流,那么这节我将会深入源码看看具体过程是如何. Co ...

最新文章

  1. mysql免费框架_瞧一瞧~看一看~MyCat架构剖析免费不要钱!(上)
  2. workflow java_workflow java实现的activity工作流实例 Develop 238万源代码下载- www.pudn.com...
  3. 软件史上最伟大的十大程序员
  4. mysql cluster 用户_mysql cluster统一用户权限
  5. 力扣买卖股票系列总结
  6. mysql alter 语句用法,添加、修改、删除字段等
  7. RStudio 的使用
  8. android stuido 快捷键
  9. 【剑指offer】29、顺时针打印矩阵
  10. Rails2.2新特性:本地化与国际化
  11. Pyqt之QApplication
  12. 《OpenCV3编程入门》学习笔记九:直方图与匹配
  13. 武士2复仇 Unity游戏工程+源码
  14. 以客户的名义,宏杉科技“存储七项式”律己律人
  15. winhex 使用教程
  16. Windows如何刷新DNS缓存
  17. mysql安装包msi_【MySQL】MySQL之MySQL5.7安装包(msi文件)在Windows8下安装
  18. 解决mysql导出scv文件乱码、蹿行的问题
  19. 计算机网络协议名词解析,网络协议名词解释
  20. springBoot使用poi导出Excel

热门文章

  1. 0004-环保公益环保宣传PPT模板免费下载
  2. 翻译来自HiDDeN网络架构-Lifeifei
  3. 【Vue项目复习笔记】详情页的展示
  4. 计算机安全相关知识,计算机安全知识
  5. 每日一课 | SQL模糊查找
  6. 为什么我们的代码难以维护(草稿)
  7. python matplotlib x轴日期显示问题。matplotlib 坐标轴设置文本间隔,matplotlib 坐标轴过于密集、无法实现其他功能。
  8. 三维重建KInectFusion 学习笔记
  9. 所有iOS设备的屏幕分辨率
  10. 可能是你见过最强的猜数字游戏(doge