1:概述

主要谈一谈 Java使用fork/koin类 实现的并发排序 以及对于Stream流的支持的splitetor

  • mismatch()   ->  寻找两个数组 第一次出现数据不一致的下标
  • parallelPrefix() -> 对数组进行,累加求和
  • parallelSetAll() -> 对数组进行置数,
  • parallelSort()   -> 并行排序
  • Spliterator() -> 对数组进行切分(切分后的数据为所有的数据的组合)
    • 奇数 x/2+1     11->6
    • 偶数  x/2    10 ==>5
public class Use_Arrays {

    @Test
public void test_mismatch() {
int []x =new int[] {1,2,3,4};
int []y =new int[] {1,3,4,5};
int index = Arrays.mismatch(x, y);
System.out.println(index);
} @Test
public void test_parallelPrefix() {
int []x =new int[] {1,2,3,4};
//f2=f1+f2
//f3=f2+f3
Arrays.parallelPrefix(x, (k,v)->k+v);
System.out.println(Arrays.toString(x)); // 实现1-100累加求和
int []y =new int[100];
Arrays.parallelSetAll(y, k->k=1);
Arrays.parallelPrefix(y, (k,v)->k+v);
System.out.println(Arrays.toString(y)); }
@Test
public void test_parallelSetAll() {
int []x =new int[100];
x[0]=1;
Arrays.parallelSetAll(x, y->y+1);
System.out.println(Arrays.toString(x));
} @Test
public void test_parallSort() {
IntStream stream = new Random().ints(0, 1000).limit(1000);
int[] array = stream.toArray();
System.out.println(Arrays.toString(array));
Arrays.parallelSort(array);
System.out.println(Arrays.toString(array));
} @Test
public void test_spliterator() {
int []x =new int[11];
Arrays.parallelSetAll(x, k->k+=1);
System.out.println(Arrays.toString(x)); Spliterator.OfInt int0_100 = Arrays.spliterator(x); int [] y=new int[(int) int0_100.estimateSize()];
int i=0;
System.out.println(int0_100.estimateSize());
System.out.println(int0_100.characteristics());
System.out.println(int0_100.getExactSizeIfKnown()); //spliterator.forEachRemaining((int k)->System.out.println(k)); OfInt int1_50 = int0_100.trySplit();
OfInt int2_25 = int1_50.trySplit();
int0_100.forEachRemaining((int k)->System.out.print(k+" "));
System.out.println();
int1_50.forEachRemaining((int k)->System.out.print(k+" "));
System.out.println();
int2_25.forEachRemaining((int k)->System.out.print(k+" "));
}
}

2:使用Spliterator实现并行输出

    @Test
public void definied_Sort() {
IntStream stream = new Random().ints(0, 100).limit(100);
int[] array = stream.toArray();
Arrays.sort(array);
final int NUMS=3;// 切分的次数 ExecutorService thread_pool = Executors.newFixedThreadPool(10); Spliterator.OfInt cut1 = Arrays.spliterator(array);
while(!thread_pool.isTerminated()) {
thread_pool.submit(()->{
OfInt split = cut1.trySplit();
thread_pool.shutdown();
split.forEachRemaining((int k)->System.out.print(k+" "));
System.out.println();
});
}
}

Java Arrays类方法的更多相关文章

  1. Java Arrays Tutorial (3)

    Java Arrays Tutorial (3) Data types have a specific set of values. A byte cannot hold a value larger ...

  2. json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)

    1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...

  3. Java Arrays.sort源代码解析

    前提: 当用到scala的sortWith,发现: def sortWith(lt: (A, A) ⇒ Boolean): List[A] // A为列表元素类型 根据指定比较函数lt进行排序,且排序 ...

  4. java Arrays.asList用法

    java Arrays.asList用法 用途 Arrays是java容器相关操作的工具类,asList方法将Array转换为list,是Array和List之间的桥梁. 注意 Arrays.asLi ...

  5. Java Arrays.sort相关用法与重载

    Java Arrays.sort() Java中的数组排序函数, 头文件 import java.util.Arrays; 相关API Arrays.sort(arys[]) Arrays.sort( ...

  6. Java Object类方法解析

    Java Object类方法解析 在Java中Object是所有类的父类,任何类都默认继承Object,其提供的方法主要有以下几种: registerNatives() hashCode和equale ...

  7. Top 10 Methods for Java Arrays

    作者:X Wang 出处:http://www.programcreek.com/2013/09/top-10-methods-for-java-arrays/ 转载文章,转载请注明作者和出处 The ...

  8. Java Arrays类进行数组排序

    排序算法,基本的高级语言都有一些提供.C语言有qsort()函数,C++有sort()函数,java语言有Arrays类(不是Array).用这些排序时,都可以写自己的排序规则. Java API对A ...

  9. JAVA Arrays.binarySearch

    转自:http://blog.csdn.net/somebodydie/article/details/8229343 package com.jaky; import java.util.*; pu ...

随机推荐

  1. TypeScript初体验

    第一次运行TypeScript 1.创建文件夹并初始化项目 mkdir ts-demo cd ts-demo npm init -y 2.安装typescript与ts-node # 局部安装 npm ...

  2. 28.分类算法---KNN

    1.工作原理: 存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类对应的关系.输入没有标签的数据后,将新数据中的每个特征与样本集中数据对应的特 ...

  3. Python常用的正则表达式处理函数

    Python常用的正则表达式处理函数 正则表达式是一个特殊的字符序列,用于简洁表达一组字符串特征,检查一个字符串是否与某种模式匹配,使用起来十分方便. 在Python中,我们通过调用re库来使用re模 ...

  4. laravel5+ElasticSearch+go-mysql-elasticsearch MySQL数据实时导入(mac)

    1. ElasticSearch安装 直接使用brew install elasticsearch 安装最新版本的es,基本没有障碍. 2.Laravel5 框架添加elasticsearch支持 在 ...

  5. 【安富莱】RTX嵌入式操作系统教程发布,支持F103,F407和F429,含81个配套例程(2017-10-17)

    前言说明:1. 首先感谢大家对我们安富莱电子一年来的支持,2016年我们会再接再厉推出更好的教程. 2. 估计也有网友会问RTX的优势在那里,针对这个问题,教程中第一章分为6条专门回答了这个问题,有兴 ...

  6. C#添加错误日志信息

    错误日志是软件用来记录运行时出错信息的文本文件.编程人员和维护人员等可以利用错误日志对系统进行调试和维护. 系统日志 系统日志包含了由Windows系统组件记录的事件.例如,在启动期间装入驱动程序或其 ...

  7. vmalloc/vfree问题思考记录

    arm 32 用户进程陷入内核态通过vmalloc/vfree分配内存的流程 内核在更新非连续内存区对应的页表项是非常懒惰的.--<深入理解linux内核> arm 32 只有一个PGD ...

  8. 什么是BGP协议

    Border Gateway Protocol,边界网关协议,简称BGP,主要用于互联网AS(自治系统)之间的互联. Linux内核原生支持的.专门用在大规模数据中心维护不同的"自治系统&q ...

  9. (十六)c#Winform自定义控件-文本框哪里去了?-HZHControls

    官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...

  10. python爬虫公众号所有信息,并批量下载公众号视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 数据分析实战 PS:如有需要Python学习资料的小伙伴可以加点击 ...