java8之Spliterator
基本用法:
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的更多相关文章
- Java8系列 (三) Spliterator可分迭代器
本文转载自 jdk8 Stream 解析2 - Spliterator分割迭代器. 概述 我们最为常见的流的产生方式是 collection.stream(), 你点开Stream()方法, 他是通过 ...
- Java8初体验(二)Stream语法详解
感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验(一)lambda表达式语法比 较详细的介绍了lambda表达式的方方面面,细心的读者会发现那篇文章的例 ...
- java8 十大新特性
这篇文章是对Java 8中即将到来的改进做一个面向开发者的综合性的总结,JDK的这一特性将会在2013年9月份发布. 在写这篇文章的时候,Java 8的开发工作仍然在紧张有序的进行中,语言特新和API ...
- Java8特性详解 lambda表达式 Stream
1.lambda表达式 Java8最值得学习的特性就是Lambda表达式和Stream API,如果有python或者javascript的语言基础,对理解Lambda表达式有很大帮助,因为Java正 ...
- Java8 新特性之Stream----java.util.stream
这个包主要提供元素的streams函数操作,比如对collections的map,reduce. 例如: int sum = widgets.stream() .filter(b -> b.ge ...
- 深入学习Java8 Lambda (default method, lambda, function reference, java.util.function 包)
Java 8 Lambda .MethodReference.function包 多年前,学校讲述C#时,就已经知道有Lambda,也惊喜于它的方便,将函数式编程方式和面向对象式编程基于一身.此外在使 ...
- Java8(1)之Lambda表达式初步与函数式接口
Lambda表达式初步 介绍 什么是Lambda表达式? 在如 Lisp.Python.Ruby 编程语言中,Lambda 是一个用于表示匿名函数或闭包的运算符 为何需要lambda表达式? 在 Ja ...
- JAVA8之数据流Stream
在JAVA8之前的传统编程方式,如果我们需要操作一个集合数据,需要使用集合提供的API,通过一个循环去获取集合的元素,这种访问数据的方式会使代码显得臃肿,JAVA8新引入的Stream类,用于重新封装 ...
- java8 Stream sorted()的一次调用链记录
代码 public static void main (String[] args) { Stream.of("d2", "a2", "b1" ...
随机推荐
- js计算两个时间差 天 时 分 秒 毫秒
// 计算两个时间差 dateBegin 开始时间 function timeFn(dateBegin) { //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了 var dateEnd = ...
- C++类中创建线程
经常会遇到需要在类中创建线程,可以使用静态成员函数,并且将类实例的指针传入线程函数的方式来实现. 实现代码代码如下: /* 类头文件 CTestThread.h */ #include<io ...
- mysqdump+binlog恢复数据
备份全库 [root@db01 b]# mysqldump -uroot -poldboy123 -A > /b/full.sql Warning: Using a password on th ...
- Hbase架构与原理(转)
Hbase架构与原理 HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利 ...
- 伤透了心的pytorch的cuda容器版
公司GPU的机器版本本比较低,找了好多不同的镜像都不行, 自己从anaconda开始制作也没有搞定(因为公司机器不可以直接上网), 哎,官网只有使用最新的NVIDIA驱动,安装起来才顺利. 最后,找到 ...
- Lovers(HDU6562+线段树+2018年吉林站)
题目链接 传送门 题意 初始时有\(n\)个空串,然后进行\(q\)次操作,操作分为以下两种: wrap l r x:把\(l,r\)中的每个字符串的首尾都加入\(x\),如\(s_i=121,x=3 ...
- pycharm下site-packages文件标记为红的问题;pycharm无法识别本地site-packages问题
当图示红框标记区域的文件夹颜色显示红色时,需要到FIle-setting里面设置好本地的运行环境,设置错误就会导致引用问题: 启动谷歌浏览器 from selenium import webdrive ...
- Python应用之-file 方法
#!/usr/bin/env python # *_* coding=utf-8 *_* """ desc: 文件方法 ######################### ...
- 9、Python复杂数据类型(list、tuple、set、dict)
一.列表(list):[a1,a2],可变数据类型 1.序列: 序列是基类类型,序列扩展类型包括:字符串.元组和列表 序列都可以进行的操作包括索引,切片,加,乘,检查成员. 此外,Python已经内置 ...
- django-改写manage类-objects
user/models.py中 class AddressManage(models.Manager): '''地址模型管理类''' def get_default_addr(self, user): ...