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. 2019/12/12学习内容摘要(Linux系统用户与用户组管理②)

    5.命令 chfn 用于修改用户的finger (finger为 /etc/passwd 文件第五个字段中显示的信息) 三,用户密码管理 1.命令passwd  格式 passwd [username ...

  2. admin配置与Mysql数据库连接

    admin配置管理数据库的框架:web版的数据库管理页面初始化数据库: python manage.py makemigrations python manage.py migrate启动项目:(创建 ...

  3. java之程序流程控制

    顺序结构:代码由上至下依次执行: 分支结构: if () { } else{ } if () { } else if () { } else { } switch(常量){ case 常量: 语句; ...

  4. Git push error: http 411的解决方案总结

    目录 一.事故现场 二.事故原因 三.解决方案 一.事故现场 git push 的时候报错如下: 将分支推送到远程存储库时遇到错误:Git failed with a fatal error, the ...

  5. 你真的会用搜索吗?—— google 搜索技巧

    鄙人用了那么多年 google ,却只会简单的空格. 虽然空格已经很强大了.google 对此做了非常多的优化,原则是让你只用最基础的输入搭配空格就能达到跟下面介绍的方法几乎一样的效果,但是还有知道一 ...

  6. windows环境下Jmeter5.2的安装使用

    一.安装配置JDK Jmeter5.2依赖JDK1.8+版本,JDK安装百度搜索JAVA下载JDK,地址:https://www.oracle.com/technetwork/java/javase/ ...

  7. queue队列基础讲解

    前言 似乎这种对蒟蒻最重要的概念都搜不到,对巨佬来说也根本不必要提及. 导致我也不懂. Queue 意义 queue,队列,一种数据结构. 队列是一种操作受限制的线性表: 特点: 1.元素先进先出. ...

  8. Spring 框架基础(01):核心组件总结,基础环境搭建

    本文源码:GitHub·点这里 || GitEE·点这里 一.Spring框架 1.框架简介 Spring是一个开源框架,框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 ...

  9. ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)

    在上一章中主要和大家分享了在ASP.NET Core中如何使用Autofac替换自带DI进行构造函数的批量依赖注入,本章将和大家继续分享如何使之能够同时支持属性的批量依赖注入. 约定: 1.仓储层接口 ...

  10. cesium 入门开发系列地图鹰眼功能(附源码下载)

    前言 cesium 入门开发系列环境知识点了解:cesium api文档介绍,详细介绍 cesium 每个类的函数以及属性等等cesium 在线例子 内容概览 cesium 结合 leaflet 实现 ...