基本用法:

import java.util.Arrays;
import java.util.Spliterator;
import java.util.stream.IntStream; public class SpliteratorTest {
/**
* Spliterator是将一个stream进行对半平分的操作类
*
* Arrays.parallelSetAll 和 IntStream.range可以生成一个指定长度Int的Stream
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
int[] array = new int[10];
Arrays.parallelSetAll(array, i -> i); // 这个方法也可以构建一个Stream,然后再构建Spliterator
Spliterator.OfInt test = IntStream.range(0, 10).spliterator();
test.forEachRemaining((int value) -> {
System.out.println(Thread.currentThread().getName() + "--" + value);
});
System.out.println("+++++++++++"); Spliterator.OfInt sp = Arrays.spliterator(array);
// 分割完后sp还剩5个元素,sp1也是5个元素
Spliterator.OfInt sp1 = sp.trySplit();
// 分割完后sp1为3个,sp2为2个
Spliterator.OfInt sp2 = sp1.trySplit(); sp1.forEachRemaining((int value) -> {
System.out.println(Thread.currentThread().getName() + "--" + value);
}); System.out.println("------------"); sp2.forEachRemaining((int value) -> {
System.out.println(Thread.currentThread().getName() + "--" + value);
}); System.out.println("------------"); sp.forEachRemaining((int value) -> {
System.out.println(Thread.currentThread().getName() + "--" + value);
});
}
}

运行结果:

main--0
main--1
main--2
main--3
main--4
main--5
main--6
main--7
main--8
main--9
+++++++++++
main--2
main--3
main--4
------------
main--0
main--1
------------
main--5
main--6
main--7
main--8
main--9

java8之Spliterator的更多相关文章

  1. Java8系列 (三) Spliterator可分迭代器

    本文转载自 jdk8 Stream 解析2 - Spliterator分割迭代器. 概述 我们最为常见的流的产生方式是 collection.stream(), 你点开Stream()方法, 他是通过 ...

  2. Java8初体验(二)Stream语法详解

    感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验(一)lambda表达式语法比 较详细的介绍了lambda表达式的方方面面,细心的读者会发现那篇文章的例 ...

  3. java8 十大新特性

    这篇文章是对Java 8中即将到来的改进做一个面向开发者的综合性的总结,JDK的这一特性将会在2013年9月份发布. 在写这篇文章的时候,Java 8的开发工作仍然在紧张有序的进行中,语言特新和API ...

  4. Java8特性详解 lambda表达式 Stream

    1.lambda表达式 Java8最值得学习的特性就是Lambda表达式和Stream API,如果有python或者javascript的语言基础,对理解Lambda表达式有很大帮助,因为Java正 ...

  5. Java8 新特性之Stream----java.util.stream

    这个包主要提供元素的streams函数操作,比如对collections的map,reduce. 例如: int sum = widgets.stream() .filter(b -> b.ge ...

  6. 深入学习Java8 Lambda (default method, lambda, function reference, java.util.function 包)

    Java 8 Lambda .MethodReference.function包 多年前,学校讲述C#时,就已经知道有Lambda,也惊喜于它的方便,将函数式编程方式和面向对象式编程基于一身.此外在使 ...

  7. Java8(1)之Lambda表达式初步与函数式接口

    Lambda表达式初步 介绍 什么是Lambda表达式? 在如 Lisp.Python.Ruby 编程语言中,Lambda 是一个用于表示匿名函数或闭包的运算符 为何需要lambda表达式? 在 Ja ...

  8. JAVA8之数据流Stream

    在JAVA8之前的传统编程方式,如果我们需要操作一个集合数据,需要使用集合提供的API,通过一个循环去获取集合的元素,这种访问数据的方式会使代码显得臃肿,JAVA8新引入的Stream类,用于重新封装 ...

  9. java8 Stream sorted()的一次调用链记录

    代码 public static void main (String[] args) { Stream.of("d2", "a2", "b1" ...

随机推荐

  1. linux上安装redis-单机版

    1. Redis的安装 1.1. Redis的安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: 第一 ...

  2. MYSQL慢查询优化方法及优化原则

    1.日期大小的比较,传到xml中的日期格式要符合'yyyy-MM-dd',这样才能走索引,如:'yyyy'改为'yyyy-MM-dd','yyyy-MM'改为'yyyy-MM-dd'[这样MYSQL会 ...

  3. 调用百度API返回经纬度

    后台调用百度API接口生成: import java.io.BufferedReader; import java.io.IOException;import java.io.InputStreamR ...

  4. python通过LXML库读取xml命名空间

    xml实例版本: <a> <city:table xmlns:city="city"> <heilongjiang name="citys& ...

  5. 关于vue的v-for遍历不显示问题

    实属不才,因为好久没看vue导致忘光了,然后发生了这么小的一个问题,惭愧. 注:vue的注册的el一定要放嘴最外层,不要和v-for放在一起,否则不会显示,因为可以这样讲,el包含的是一个容器,而v- ...

  6. idea去除mybatis的xml那个恶心的绿色背景

    https://my.oschina.net/qiudaozhang/blog/2877536

  7. Array.Sort(valuesArry);

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  8. 微信小程序——<scroll-view>滚动到最底部

    最近在做个直播间,有个这样的需要,就是进入到页面,<scroll-view>需要滚动到最底部,并且发送消息之后自动的滚动到底部. 开始想着计算里面内容的高度,然后通过设置 scroll-t ...

  9. c++合并两个序列函数merge()和inplace_merge()

    大家在写归并排序时是不是觉得合并两个序列有点麻烦,有快速的方法吗? 我们全部函数自己写,比如: #include<bits/stdc++.h> using namespace std; # ...

  10. php Web 项目的文件/文件夹上传下载

    PHP用超级全局变量数组$_FILES来记录文件上传相关信息的. 1.file_uploads=on/off 是否允许通过http方式上传文件 2.max_execution_time=30 允许脚本 ...