二.五 比较数组是否相同 equals()
二.五.一 例子
@Test public void equalsTest(){ //源数组 int[] arr1={1,2,3,4,5,6,7,8,9}; int[] arr2={1,2,3,4,5}; int[] arr3={1,2,3,4,5,6,7,8,9}; System.out.println("arr1与 arr2是否相同:"+Arrays.equals(arr1,arr2)); System.out.println("arr1与 arr3是否相同:"+Arrays.equals(arr1,arr3)); }
控制台打印输出:
也可以比较 对象数组, 需要重写对象的 equals () 方法。
二.五.二 简单内部实现
二.六 填充数组 fill
二.六.一 无范围填充
@Test public void fillTest1(){ //源数组有内容填充: int[] arr1={1,2,3,4,5,6,7,8,9}; //填充100 Arrays.fill(arr1,100); System.out.println("有内容数组填充:"+Arrays.toString(arr1)); int[] arr2=new int[9]; Arrays.fill(arr2,100); System.out.println("无内容数组填充:"+Arrays.toString(arr2)); }
控制台打印输出:
实际上,就是替换。
内部实现:
public static void fill(int[] a, int val) { for (int i = 0, len = a.length; i < len; i++) a[i] = val; }
二.六.二 有范围填充
@Test public void fillTest2(){ //源数组有内容填充: int[] arr1={1,2,3,4,5,6,7,8,9}; //填充100,只填充2~5 索引处的内容 Arrays.fill(arr1,2,5,100); System.out.println("有内容数组2~5填充:"+Arrays.toString(arr1)); int[] arr2=new int[9]; Arrays.fill(arr2,2,5,100); System.out.println("无内容数组2~5填充:"+Arrays.toString(arr2)); }
控制台打印输出:
内部实现, 范围性替换
public static void fill(int[] a, int fromIndex, int toIndex, int val) { // rangeCheck(a.length, fromIndex, toIndex); //检查范围是否合理 for (int i = fromIndex; i < toIndex; i++) a[i] = val; }
二.七 二元操作
类似于 遍历数组中的每一个元素,执行相同的维护操作。
二.七.一 parallelPrefix() 小例子
如,使数组中的每一个元素,都变成 当前元素* 上一个索引处的元素, 即改变每一个元素的值。
@Test public void parallelPrefixTest(){ int[] arr={1,2,3,4,5,6,7,8,9}; Arrays.parallelPrefix(arr, new IntBinaryOperator() { //left代表数组中前一个索引处的元素值,第一个元素,不进入该方法计算 //right代表数组中当前索引处的元素值 @Override public int applyAsInt(int left, int right) { return left*right; } }); System.out.println("新内容为:"+Arrays.toString(arr)); }
控制台打印输出:
二.七.二 parallelSetAll() 小例子
用于重新设置数组中的元素值
@Test public void parallelSetAllTest(){ int[] arr={1,2,3,4,5,6,7,8,9}; Arrays.parallelSetAll(arr, new IntUnaryOperator() { @Override public int applyAsInt(int operand) { return operand*2; } }); System.out.println("有内容的新内容为:"+Arrays.toString(arr)); arr=new int[9]; Arrays.parallelSetAll(arr, new IntUnaryOperator() { @Override public int applyAsInt(int operand) { return operand*2; } }); System.out.println("无内容的新内容为:"+Arrays.toString(arr)); }
控制台打印输出:
二.七.三 setAll() 小例子
@Test public void setAllTest(){ int[] arr={1,2,3,4,5,6,7,8,9}; Arrays.setAll(arr, new IntUnaryOperator() { @Override public int applyAsInt(int operand) { return operand*3; } }); System.out.println("有内容的新内容为:"+Arrays.toString(arr)); arr=new int[9]; Arrays.setAll(arr, new IntUnaryOperator() { @Override public int applyAsInt(int operand) { return operand*3; } }); System.out.println("无内容的新内容为:"+Arrays.toString(arr)); }
控制台打印输出:
二.八 排序 sort()
二.八.一 parallelSort() 并发无范围排序 小例子
@Test public void parallelSortTest1(){ int[] arr={1,3,5,7,9,2,4,6,8}; Arrays.parallelSort(arr); System.out.println("排序后的数组为:"+Arrays.toString(arr)); }
控制台打印输出:
二.八.二 parallelSort() 并发有范围排序 小例子
@Test public void parallelSortTest2(){ int[] arr={1,3,5,7,9,2,4,6,8}; //只排序 3~7, 即 7,9,2,4 四个元素。 排序完为 2,4,7,9 Arrays.parallelSort(arr,3,7); System.out.println("排序后的数组为:"+Arrays.toString(arr)); }
控制台打印输出:
二.八.三 sort() 无范围排序 小例子
@Test public void sortTest1(){ int[] arr={1,3,5,7,9,2,4,6,8}; Arrays.sort(arr); System.out.println("排序后的数组为:"+Arrays.toString(arr)); }
控制台打印输出:
二.八.四 sort() 有范围排序小例子
@Test public void sortTest2(){ int[] arr={1,3,5,7,9,2,4,6,8}; //只排序 3~7, 即 7,9,2,4 四个元素。 排序完为 2,4,7,9 Arrays.sort(arr,3,7); System.out.println("排序后的数组为:"+Arrays.toString(arr)); }
控制台打印输出:
二.九 转换成流 Stream()
二.九.一 无范围转换小例子
@Test public void streamTest1(){ int[] arr={1,2,3,4,5,6,7,8,9}; //转换成流 Arrays.stream(arr).forEach(n -> System.out.print(n)); }
控制台打印输出:
二.九.二 有范围转换小例子
@Test public void streamTest2(){ int[] arr={1,2,3,4,5,6,7,8,9}; //将索引位置为 3~8的转换成流,不包括8索引处的元素 Arrays.stream(arr,3,8).forEach(n -> System.out.print(n)); }
控制台打印输出:
谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!