学习-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 方法用来替换数组中的元素。它既可以直接替换数组中所有元素,也可以通过指定索引范围来替换部分元素。

直接替换数组中所有元素:

  1. fill(arr, value)

参数说明:

  • 第一个参数(arr)为数组;
  • 第二个参数(value)为替换值。

示例:把数组中所有元素替换成 8。

  1. public static void main(String[] args) {
  2. int [] arr={2,3,4,8,-2,0,-43,88};
  3. Arrays.fill(arr,8); // 使用fill方法把数组中所有值替换成8
  4. System.out.println(Arrays.toString(arr)); // 打印新数组中的值
  5. }

执行结果:

  1. [8, 8, 8, 8, 8, 8, 8, 8]

替换部分元素

  1. fill(arr, fromIndex,toIndex, value)

参数说明:

  • 第一个参数(arr)为数组;
  • 第二个参数(fromIndex)为数组中需要被替换的起始索引值(包含);
  • 第三个参数(toIndex)为数组中需要被替换的结束索引值(不包含);
  • 第四个参数(value)为替换值。

示例:把数组中部分元素替换成 8。

  1. public static void main(String[] args) {
  2. // 请在Begin-End间编写代码
  3. /********** Begin **********/
  4. int [] arr={2,3,4,8,-2,0,-43,88};
  5. Arrays.fill(arr,1,5,8); // 使用fill方法把数组中部分值替换成8
  6. System.out.println(Arrays.toString(arr)); // 打印新数组中的值
  7. /********** End **********/
  8. }

执行结果:

  1. [2, 8, 8, 8, 8, 0, -43, 88]

sort 方法详细介绍

sort 方法用于给数组元素排序,默认排序方式为升序。

示例:

  1. public static void main(String[] args) {
  2. int [] arr={8,2,7,84,12,1,786,92,34}; // 定义原数组
  3. Arrays.sort(arr); // 对数组元素排序
  4. System.out.print(Arrays.toString(arr)); // 打印数组
  5. }

执行结果:

  1. [1, 2, 7, 8, 12, 34, 84, 92, 786]

copyOf 方法和 copyOfRange 方法详细介绍

copyOf 方法和 copyOfRange 方法都用于复制数组,其中 copyOfRange 方法需要指定起始位置。 示例:

  1. public static void main(String[] args) {
  2. int [] arr={8,2,7,84,12,1,786,92,34}; // 定义原数组
  3. int[] ints = Arrays.copyOf(arr, 4);// 复制数组,第二个参数指定新数组长度
  4. // 复制数组,当指定新数组长度大于原数组时,会填充默认值
  5. int[] ints1=Arrays.copyOf(arr,10);
  6. System.out.println(Arrays.toString(ints)); // 打印数组
  7. System.out.print(Arrays.toString(ints1)); // 打印数组
  8. int[] ints2 = Arrays.copyOfRange(arr, 2, 4); // 复制数组,第二、三个参数指定索引值
  9. // 复制数组,当指定新数组长度大于原数组时,会填充默认值
  10. int[] ints3 = Arrays.copyOfRange(arr, 0, 10);
  11. System.out.println(Arrays.toString(ints2)); // 打印数组
  12. System.out.print(Arrays.toString(ints3)); // 打印数组
  13. }

执行结果:

  1. [8, 2, 7, 84]
  2. [8, 2, 7, 84, 12, 1, 786, 92, 34, 0]
  3. [7, 84]
  4. [8, 2, 7, 84, 12, 1, 786, 92, 34, 0]

binarySearch 方法

binarySearch 方法用于查找指定元素索引值。因为该方法使用的是二分法查找,所以在调用该方法之前,必须先调用 sort() 方法进行排序,如果数组没有排序,那么结果是不确定的。

示例:

  1. public static void main(String[] args) {
  2. int [] arr={8,6,84,12,3,786,7,34}; // 定义原数组
  3. int i = Arrays.binarySearch(arr, 7); // 未对数组排序,直接查找元素
  4. System.out.println(i); // 打印索引值
  5. Arrays.sort(arr); // 对原数组排序
  6. System.out.println(Arrays.toString(arr)); // 打印排序后的数组
  7. int x = Arrays.binarySearch(arr, -2); // 排序后查找数组中不存在的元素,不存在则会输出-1
  8. int y = Arrays.binarySearch(arr, 7); // 排序后查找数组中存在的元素
  9. System.out.println(x); // 打印索引值
  10. System.out.print(y); // 打印索引值
  11. }

执行结果:

  1. -3
  2. [3, 6, 7, 8, 12, 34, 84, 786]
  3. -1
  4. 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
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章