Java Arrays类方法
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类方法的更多相关文章
- Java Arrays Tutorial (3)
Java Arrays Tutorial (3) Data types have a specific set of values. A byte cannot hold a value larger ...
- 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:// ...
- Java Arrays.sort源代码解析
前提: 当用到scala的sortWith,发现: def sortWith(lt: (A, A) ⇒ Boolean): List[A] // A为列表元素类型 根据指定比较函数lt进行排序,且排序 ...
- java Arrays.asList用法
java Arrays.asList用法 用途 Arrays是java容器相关操作的工具类,asList方法将Array转换为list,是Array和List之间的桥梁. 注意 Arrays.asLi ...
- Java Arrays.sort相关用法与重载
Java Arrays.sort() Java中的数组排序函数, 头文件 import java.util.Arrays; 相关API Arrays.sort(arys[]) Arrays.sort( ...
- Java Object类方法解析
Java Object类方法解析 在Java中Object是所有类的父类,任何类都默认继承Object,其提供的方法主要有以下几种: registerNatives() hashCode和equale ...
- Top 10 Methods for Java Arrays
作者:X Wang 出处:http://www.programcreek.com/2013/09/top-10-methods-for-java-arrays/ 转载文章,转载请注明作者和出处 The ...
- Java Arrays类进行数组排序
排序算法,基本的高级语言都有一些提供.C语言有qsort()函数,C++有sort()函数,java语言有Arrays类(不是Array).用这些排序时,都可以写自己的排序规则. Java API对A ...
- JAVA Arrays.binarySearch
转自:http://blog.csdn.net/somebodydie/article/details/8229343 package com.jaky; import java.util.*; pu ...
随机推荐
- linux添加磁盘分区做为swap分区
在部署oracle时,根据内存的不同,会对swap分区大小有不同要求,具体参考https://www.cnblogs.com/chxmtl/p/11672053.html 下面为具体操作步骤. 1.新 ...
- MS SQL 设置自增长字段默认值
dbcc checkident(tablename,reseed,value) 其中tablename为你所要修改的表名,value为默认值.比如你要设置自增长字段值从1开始,则: )
- 一个简单的WebServer,socket+threading
一个简单的WebServer import socket import threading body = '<h1> web server </h1>' response_pa ...
- RTP Payload Format for H264 Video
基础传输结构 rtp中对于h264数据的存储分为两层,分别是 VCL: video coding layer 视频编码层 这是h264中block, macro block 以及 slice级别的定义 ...
- Java之多线程创建方式
多线程的由来 我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计?要解决上述问题,咱们得使用多进程或者多线程来解决. 多线程的好处: ...
- Java大数类 BigInteger
package bigint; /** * This class encapsulates a BigInteger, i.e. a positive or negative integer * wi ...
- Linux中,Tomcat 怎么承载高并发(深入Tcp参数 backlog)
一.前言 这两天看tomcat,查阅 tomcat 怎么承载高并发时,看到了backlog参数.我们知道,服务器端一般使用mq来减轻高并发下的洪峰冲击,将暂时不能处理的请求放入队列,后续再慢慢处理.其 ...
- goroutine,channel
Go语言中有个概念叫做goroutine, 这类似我们熟知的线程,但是更轻. 以下的程序,我们串行地去执行两次loop函数: package main import "fmt" f ...
- 网站报"组策略阻止了这个程序。要获取详细信息,请与系统管理员联系。"错误。
今天将一个测试的网站发布到阿里云虚拟主机后,访问网站报“组策略阻止了这个程序.要获取详细信息,请与系统管理员联系.”错误.如下: 但是这个错误在本地调试时是没有的. 经过调查,原来罪魁祸首是 Micr ...
- jenkins-pipeline里使用docker命令
在jenkins的pipeline里,就是jenkinsfile文件里,如果希望调用docker来构建镜像,需要进行以下配置! tools{}里添加docker是失败的,这个我找了很多资料,最后需要e ...