1:概述

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

  • mismatch()   ->  寻找两个数组 第一次出现数据不一致的下标
  • parallelPrefix() -> 对数组进行,累加求和
  • parallelSetAll() -> 对数组进行置数,
  • parallelSort()   -> 并行排序
  • Spliterator() -> 对数组进行切分(切分后的数据为所有的数据的组合)
    • 奇数 x/2+1     11->6
    • 偶数  x/2    10 ==>5
  1. public class Use_Arrays {
  2.  
  3. @Test
  4. public void test_mismatch() {
  5. int []x =new int[] {1,2,3,4};
  6. int []y =new int[] {1,3,4,5};
  7. int index = Arrays.mismatch(x, y);
  8. System.out.println(index);
  9. }
  10.  
  11. @Test
  12. public void test_parallelPrefix() {
  13. int []x =new int[] {1,2,3,4};
  14. //f2=f1+f2
  15. //f3=f2+f3
  16. Arrays.parallelPrefix(x, (k,v)->k+v);
  17. System.out.println(Arrays.toString(x));
  18.  
  19. // 实现1-100累加求和
  20. int []y =new int[100];
  21. Arrays.parallelSetAll(y, k->k=1);
  22. Arrays.parallelPrefix(y, (k,v)->k+v);
  23. System.out.println(Arrays.toString(y));
  24.  
  25. }
  26. @Test
  27. public void test_parallelSetAll() {
  28. int []x =new int[100];
  29. x[0]=1;
  30. Arrays.parallelSetAll(x, y->y+1);
  31. System.out.println(Arrays.toString(x));
  32. }
  33.  
  34. @Test
  35. public void test_parallSort() {
  36. IntStream stream = new Random().ints(0, 1000).limit(1000);
  37. int[] array = stream.toArray();
  38. System.out.println(Arrays.toString(array));
  39. Arrays.parallelSort(array);
  40. System.out.println(Arrays.toString(array));
  41. }
  42.  
  43. @Test
  44. public void test_spliterator() {
  45. int []x =new int[11];
  46. Arrays.parallelSetAll(x, k->k+=1);
  47. System.out.println(Arrays.toString(x));
  48.  
  49. Spliterator.OfInt int0_100 = Arrays.spliterator(x);
  50.  
  51. int [] y=new int[(int) int0_100.estimateSize()];
  52. int i=0;
  53. System.out.println(int0_100.estimateSize());
  54. System.out.println(int0_100.characteristics());
  55. System.out.println(int0_100.getExactSizeIfKnown());
  56.  
  57. //spliterator.forEachRemaining((int k)->System.out.println(k));
  58.  
  59. OfInt int1_50 = int0_100.trySplit();
  60. OfInt int2_25 = int1_50.trySplit();
  61. int0_100.forEachRemaining((int k)->System.out.print(k+" "));
  62. System.out.println();
  63. int1_50.forEachRemaining((int k)->System.out.print(k+" "));
  64. System.out.println();
  65. int2_25.forEachRemaining((int k)->System.out.print(k+" "));
  66. }
  67. }

2:使用Spliterator实现并行输出

  1. @Test
  2. public void definied_Sort() {
  3. IntStream stream = new Random().ints(0, 100).limit(100);
  4. int[] array = stream.toArray();
  5. Arrays.sort(array);
  6. final int NUMS=3;// 切分的次数
  7.  
  8. ExecutorService thread_pool = Executors.newFixedThreadPool(10);
  9.  
  10. Spliterator.OfInt cut1 = Arrays.spliterator(array);
  11. while(!thread_pool.isTerminated()) {
  12. thread_pool.submit(()->{
  13. OfInt split = cut1.trySplit();
  14. thread_pool.shutdown();
  15. split.forEachRemaining((int k)->System.out.print(k+" "));
  16. System.out.println();
  17. });
  18. }
  19. }

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. linux添加磁盘分区做为swap分区

    在部署oracle时,根据内存的不同,会对swap分区大小有不同要求,具体参考https://www.cnblogs.com/chxmtl/p/11672053.html 下面为具体操作步骤. 1.新 ...

  2. MS SQL 设置自增长字段默认值

    dbcc checkident(tablename,reseed,value) 其中tablename为你所要修改的表名,value为默认值.比如你要设置自增长字段值从1开始,则: )

  3. 一个简单的WebServer,socket+threading

    一个简单的WebServer import socket import threading body = '<h1> web server </h1>' response_pa ...

  4. RTP Payload Format for H264 Video

    基础传输结构 rtp中对于h264数据的存储分为两层,分别是 VCL: video coding layer 视频编码层 这是h264中block, macro block 以及 slice级别的定义 ...

  5. Java之多线程创建方式

    多线程的由来 我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计?要解决上述问题,咱们得使用多进程或者多线程来解决. 多线程的好处: ...

  6. Java大数类 BigInteger

    package bigint; /** * This class encapsulates a BigInteger, i.e. a positive or negative integer * wi ...

  7. Linux中,Tomcat 怎么承载高并发(深入Tcp参数 backlog)

    一.前言 这两天看tomcat,查阅 tomcat 怎么承载高并发时,看到了backlog参数.我们知道,服务器端一般使用mq来减轻高并发下的洪峰冲击,将暂时不能处理的请求放入队列,后续再慢慢处理.其 ...

  8. goroutine,channel

    Go语言中有个概念叫做goroutine, 这类似我们熟知的线程,但是更轻. 以下的程序,我们串行地去执行两次loop函数: package main import "fmt" f ...

  9. 网站报"组策略阻止了这个程序。要获取详细信息,请与系统管理员联系。"错误。

    今天将一个测试的网站发布到阿里云虚拟主机后,访问网站报“组策略阻止了这个程序.要获取详细信息,请与系统管理员联系.”错误.如下: 但是这个错误在本地调试时是没有的. 经过调查,原来罪魁祸首是 Micr ...

  10. jenkins-pipeline里使用docker命令

    在jenkins的pipeline里,就是jenkinsfile文件里,如果希望调用docker来构建镜像,需要进行以下配置! tools{}里添加docker是失败的,这个我找了很多资料,最后需要e ...