学习-Java数组之Arrays类操作数组之填充替换数组元素
2020-11-05 00:00:00
学习
任务描述
本关任务:根据控制台接收的数据,创建数组,使用 fill 方法替换数组中的部分数据,并输出最后结果。
相关知识
为了完成本关任务,你需要掌握:
- Arrays 类的作用;
- Arrays 类常用方法。
Arrays类
java.util.Arrays 类提供多种方法用来操作数组,比如排序和替换等。 我们要想使用它,只需两个步骤:
使用
import java.util.Arrays;
导入该类;使用
Arrays.方法名(数组)
操作数组。
下面我们来了解一下它的常用方法。
Arrays 类常用方法
方法名 | 用法 |
---|---|
toString 方法 | 该方法主要返回数组元素的字符串形式 |
fill 方法 | 该方法主要用于替换数组中的元素 |
sort 方法 | 该方法主要用于给数组元素排序 |
copyOf 方法 | 该方法主要用于复制数组 |
copyOfRange 方法 | 该方法主要用于复制数组,需要指定起始位置 |
binarySearch 方法 | 该方法主要用于查找指定元素索引值 |
fill 方法详细介绍
fill 方法用来替换数组中的元素。它既可以直接替换数组中所有元素,也可以通过指定索引范围来替换部分元素。
直接替换数组中所有元素:
fill(arr, value)
参数说明:
- 第一个参数(arr)为数组;
- 第二个参数(value)为替换值。
示例:把数组中所有元素替换成 8。
public static void main(String[] args) {
int [] arr={2,3,4,8,-2,0,-43,88};
Arrays.fill(arr,8); // 使用fill方法把数组中所有值替换成8
System.out.println(Arrays.toString(arr)); // 打印新数组中的值
}
执行结果:
[8, 8, 8, 8, 8, 8, 8, 8]
替换部分元素
fill(arr, fromIndex,toIndex, value)
参数说明:
- 第一个参数(arr)为数组;
- 第二个参数(fromIndex)为数组中需要被替换的起始索引值(包含);
- 第三个参数(toIndex)为数组中需要被替换的结束索引值(不包含);
- 第四个参数(value)为替换值。
示例:把数组中部分元素替换成 8。
public static void main(String[] args) {
// 请在Begin-End间编写代码
/********** Begin **********/
int [] arr={2,3,4,8,-2,0,-43,88};
Arrays.fill(arr,1,5,8); // 使用fill方法把数组中部分值替换成8
System.out.println(Arrays.toString(arr)); // 打印新数组中的值
/********** End **********/
}
执行结果:
[2, 8, 8, 8, 8, 0, -43, 88]
sort 方法详细介绍
sort 方法用于给数组元素排序,默认排序方式为升序。
示例:
public static void main(String[] args) {
int [] arr={8,2,7,84,12,1,786,92,34}; // 定义原数组
Arrays.sort(arr); // 对数组元素排序
System.out.print(Arrays.toString(arr)); // 打印数组
}
执行结果:
[1, 2, 7, 8, 12, 34, 84, 92, 786]
copyOf 方法和 copyOfRange 方法详细介绍
copyOf 方法和 copyOfRange 方法都用于复制数组,其中 copyOfRange 方法需要指定起始位置。 示例:
public static void main(String[] args) {
int [] arr={8,2,7,84,12,1,786,92,34}; // 定义原数组
int[] ints = Arrays.copyOf(arr, 4);// 复制数组,第二个参数指定新数组长度
// 复制数组,当指定新数组长度大于原数组时,会填充默认值
int[] ints1=Arrays.copyOf(arr,10);
System.out.println(Arrays.toString(ints)); // 打印数组
System.out.print(Arrays.toString(ints1)); // 打印数组
int[] ints2 = Arrays.copyOfRange(arr, 2, 4); // 复制数组,第二、三个参数指定索引值
// 复制数组,当指定新数组长度大于原数组时,会填充默认值
int[] ints3 = Arrays.copyOfRange(arr, 0, 10);
System.out.println(Arrays.toString(ints2)); // 打印数组
System.out.print(Arrays.toString(ints3)); // 打印数组
}
执行结果:
[8, 2, 7, 84]
[8, 2, 7, 84, 12, 1, 786, 92, 34, 0]
[7, 84]
[8, 2, 7, 84, 12, 1, 786, 92, 34, 0]
binarySearch 方法
binarySearch 方法用于查找指定元素索引值。因为该方法使用的是二分法查找,所以在调用该方法之前,必须先调用 sort() 方法进行排序,如果数组没有排序,那么结果是不确定的。
示例:
public static void main(String[] args) {
int [] arr={8,6,84,12,3,786,7,34}; // 定义原数组
int i = Arrays.binarySearch(arr, 7); // 未对数组排序,直接查找元素
System.out.println(i); // 打印索引值
Arrays.sort(arr); // 对原数组排序
System.out.println(Arrays.toString(arr)); // 打印排序后的数组
int x = Arrays.binarySearch(arr, -2); // 排序后查找数组中不存在的元素,不存在则会输出-1
int y = Arrays.binarySearch(arr, 7); // 排序后查找数组中存在的元素
System.out.println(x); // 打印索引值
System.out.print(y); // 打印索引值
}
执行结果:
-3
[3, 6, 7, 8, 12, 34, 84, 786]
-1
2
import java.util.Arrays; import java.util.Scanner; public class ArrTest { public static void main(String[] args) { // 请在Begin-End间编写完整代码 /********** Begin **********/ // 第一步:从控制台获取输入值(当输入值为%时,终止获取),并给数组赋值 Scanner input = new Scanner(System.in); int n = input.nextInt(); int[] array = new int[n]; int i = 0; while (!input.hasNext("%")){ array[i] = input.nextInt(); i ++; } // 第二步:替换数组 for(int j = 0;j < n;j += 4){ Arrays.fill(array,j,j + 1,18); } // 第三步:输出替换后的数组 System.out.print(Arrays.toString(array)); /********** End **********/ } }
原文作者:摸鱼的三金
原文地址: https://blog.csdn.net/weixin_46075438/article/details/122654400
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/weixin_46075438/article/details/122654400
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章