Java 8中的增强的Arrays
2015-11-02 20:07
375 查看
并行排序
正像并发加法器能加速计数一样,Java 8还实现了一种简洁的方法来加速排序。这个秘诀很简单。你不再这么做:Array.sort(myArray);
而是这么做:
Arrays.parallelSort(myArray);
这会自动把目标数组分割成几个部分,这些部分会被放到独立的CPU核上去运行,再把结果合并起来。这里唯一需要注意的是,在一个大量使用多线程的环境中,比如一个繁忙的Web容器,这种方法的好处就会减弱(降低90%以上),因为越来越多的CPU上下文切换增加了开销。
int[] array = new int[5];
//填充数组
Arrays.fill(array, 5);
System.out.println("填充数组:Arrays.fill(array, 5):");
//将数组的第2和第3个元素赋值为8
Arrays.fill(array, 2, 4, 8);
System.out.println("将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8):");
int[] array1 = {7,8,3,2,12,6,3,5,4};
//对数组的第2个到第6个进行排序进行排序
Arrays.sort(array1,2,7);
System.out.println("对数组的第2个到第6个元素进行排序进行排序:Arrays.sort(array,2,7):");
TestArrays.output(array1);
//对整个数组进行排序
Arrays.sort(array1);
System.out.println("对整个数组进行排序:Arrays.sort(array1):");
TestArrays.output(array1);
//比较数组元素是否相等
System.out.println("比较数组元素是否相等:Arrays.equals(array, array1):"+"\n"+Arrays.equals(array, array1));
int[] array2 = array1.clone();
System.out.println("克隆后数组元素是否相等:Arrays.equals(array1, array2):"+"\n"+Arrays.equals(array1, array2));
//使用二分搜索算法查找指定元素所在的下标(必须是排序好的,否则结果不正确)
Arrays.sort(array1);
//Arrays.binarySearch(type[] array1,type
key);
//Arrays.binarySearch(type[] array1,,int fromIndex,int endIndex,type
key);
System.out.println("元素3在array1中的位置:Arrays.binarySearch(array1, 3):"+"\n"+Arrays.binarySearch(array1, 3));
//如果不存在就返回负数
System.out.println("元素9在array1中的位置:Arrays.binarySearch(array1, 9):"+"\n"+Arrays.binarySearch(array1, 9,3));
//对数组进行复制
//type[] copyOf(type[] original,int length);将原数组复制到一个新数组中去,如果length小于数组的长度,就复制数组的前几个元素,如果大于数组的长度就补0或false或null
//type[] copyOf(type[] original,,int fromIndex,int endIndex,int length);将原数组复制到一个新数组中去,截取数组中的元素。
}
输出结果:
填充数组:Arrays.fill(array, 5):
5 5 5 5 5
将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8):
5 5 8 8 5
对数组的第2个到第6个元素进行排序进行排序:Arrays.sort(array,2,7):
7 8 2 3 3 6 12 5 4
对整个数组进行排序:Arrays.sort(array1):
2 3 3 4 5 6 7 8 12
比较数组元素是否相等:Arrays.equals(array, array1):
false
克隆后数组元素是否相等:Arrays.equals(array1, array2):
true
元素3在array1中的位置:Arrays.binarySearch(array1, 3):
1
元素9在array1中的位置:Arrays.binarySearch(array1, 9):
-9
相关文章推荐
- java基础之对properties配置文件的读写操作
- SpringMVC
- SpringIOC_容器的类扫描注解
- spring 读取操作系统上的文件
- java怎么实现两个对象内容的交换
- Java list容器
- Eclipse 编写java时, 出现的库访问限制问题
- JAVA 数组作业——动手动脑以及课后实验性问题
- Eclipse下Java链接MySQL数据库
- 关于Java交换两个对象的问题
- java线程基础知识和小案例
- eclipse设置和优化
- Java版本
- Java数据类型、操作符、表达式
- Java接口
- Java类、超类、包
- Java数组、集合
- Java 时间、字符串
- Java图形处理
- Java用户界面技术