Java中数组的基本操作——下面开始我的表演

Java中数组的基本操作——下面开始我的表演

前言
上一期介绍了Java中的数组,本期来一起了解一下对数相关的基本操作。
希望有所帮助!!!(本文中若有任何错误观点,敬请路过的大佬不吝赐教,感激不尽。)


java.util包Arrays类包含了用来操作数组(如排序和搜索)的各种方法。本期一起来了解一下。

一、遍历数组

遍历数组说白了就是获取数组中的每一个元素。通常遍历数组都是使用for循环结构来实现

1.1遍历一维数组

遍历一维数组so easy,也很好理解(哎呀,原来我还会英语呢。666)。
代码示例:

public class Test25 {               //创建类
    public static void main(String[] args) {        //主方法
        int[] num = new int[]{1,3,5,7,9};       //创建一个int类型的数组num
        System.out.println("遍历后的结果为:");
        for (int i = 0; i < num.length; i++) {      //使用for循环遍历数组num
            System.out.print(num[i] + "\t");
        }

    }
}

运行结果:
在这里插入图片描述

1.2遍历二位数组

遍历二维数组需要使用双层for循环,通过数组的length属性可以获得数组的长度。
代码示例:

public class Test26 {           //创建类
    public static void main(String[] args) {        //主方法
        int num[][] = new int[][]{{1},{2,3},{4,5,6}};       //创建二维数组
        System.out.println("遍历后的结果为:");
        for (int i = 0; i < num.length; i++) {      //循环遍历二维数组中的每个元素
            for (int j = 0; j < num[i].length ; j++) {        //输出数组中的元素
                System.out.print(num[i][j]);
            }
            System.out.println();           //输出空格
        }
    }
}

运行结果:
在这里插入图片描述

在遍历数组时,使用foreach语句可能或更加简单,安排一组代码,感受一下使用foreach语句遍历二维数组
代码示例:

public class Test27 {           //创建类
    public static void main(String[] args) {        //主方法
        int arr[][] = new int[][]{{1,3},{2,4}};     //创建二维数组
        System.out.println("数组中的所有元素在这里:");
        int i = 0;          //定义一个int类型的变量i,作为外层循环的计数装置
        for (int x[]:arr) {         //外层循环变量为一维数组
            i++;            //外层计数装置递增
            int j = 0;      //定义一个int类型的变量j,作为内层循环的计数器
            for (int y:x) {     //循环遍历每一个数组元素
                j++;            //内层计数装置递增
                if (i == arr.length && j == x.length) {     //判断变量是二维数组中的最后一个元素
                    System.out.print(y);                      //输出二位数组的最后一个元素
                }else{
                    //如果不是二维数组中的最后一个元素
                    System.out.print(y + "、");
                }
            }
        }
    }
}

运行结果:
在这里插入图片描述


二、填充替换数组元素

数组中的元素定义完成后,可以通过Arrays类的静态方法fill()来对数组中的元素进行替换。该方法通过各种重载形式完成对任意类型的数组元素进行替换。

2.1fill(int[] arr,int value)

该方法可将指定的int值分配给int型数组的每个元素
语法如下:

fill(int[] arr, int value)
  • arr:要进行替换的数组
  • value:要存储数组中所有元素的值

安排一段代码,实现通过fill方法填充数组元素,最后将数组中的各个元素输出。
代码示例:

import java.util.Arrays;        //记得导包

public class Test28 {       //创建类
    public static void main(String[] args) {        //主方法
        int arr[] = new int[5];         //创建一个一维数组
        Arrays.fill(arr,8);         //使用同一个值对数组进行填充
        for (int i = 0; i < arr.length; i++) {      //循环遍历数组中的元素
            System.out.println("第" + i + "个元素是:" + arr[i]);     //将数组中的元素一次输出
        }
    }
}

运行结果:
在这里插入图片描述

2.2 fill(int[] a,int fromIndex,int toIndex,int value)

该方法是将指定的int值分配给int型数组指定范围中的每个元素。填充的范围从索引formIndex(包括)一直到索引toIndex(不包括)。如果fromIndex == toIndex,则填充范围为空。
语法:

fill(int[] arr,int fromIndex,int toIndex,int value)
  • arr:要进行填充的数组
  • fromIndex:要使用指定值填充的第一个元素的索引(包括)
  • toIndex:要使用指定的值填充的最后一个元素的索引(不包括)
  • value:要存储在空数组所有元素中的值

安排一段代码。创建一维数组,通过fill()方法替换数组元素,然后输出数组中的元素。
代码示例:

import java.util.Arrays;        //导包

public class Text29 {       //创建类
    public static void main(String[] args) {       //主方法
        int arr[] = new int[]{10,15,20,25};         //创建数组
        Arrays.fill(arr,1,2,8);     //用fill()方法对数组进行初始化
        for (int i = 0; i < arr.length; i++) {          //遍历
            System.out.println("第" + i + "个元素是:" + arr[i]);     //输出
        }
    }
}

运行结果:
在这里插入图片描述
注意:
如果指定的索引位置大于或者等于要进行填充的数组的长度,则会报出ArraysIndexOutOfBoundsException异常(数组越界异常)。


三、对数组进行排序

对数组的排序应用的还是Arrays类,不过用到是sort()方法来实现对数组的排序。sort()方法提供了多种重载的方式,可对任意类型的数组进行升序排序。
语法:

Arrays.sort(object);
  • List item
  • Object是指进行排序的数组名称

安排上一段代码,创建一维数组,将数组排序后输出。
代码示例:

import java.util.Arrays;

public class Test30 {           //创建类
    public static void main(String[] args) {        //主方法
        int arr[] = new int[]{2,6,8,4,10};          //创建数组
        Arrays.sort(arr);                   //将数组进行排序
        for (int i = 0; i < arr.length; i++) {      //遍历
            System.out.println(arr[i]);         //输出
        }
    }
}

运行结果:
在这里插入图片描述
注意:
Java中的String类型数组的排序算反是根据字典编排顺序排序的,因此受罪排在字母前,大写字母排在小写字母前面。


四、复制数组

Arrays类的copyOf()方法与copyOfRange()方法可以实现对数组的复制。copyOf方法是复制数组至指定长度,copyOfRange()方法则将指定数组的指定长度复制到一个新数组中。

4.1copyOf()方法

该方法提供了多种重载方式,用于满足不同类型数组的复制
语法:

copyOf(arr,int newlength)
  • arr:要进行复制的数组
  • newlength:int常量,指复制后的新数组长度。如果新数组的长度大于数组arr的长度则用0填充(根据复制数组的类型来决定填充的值,整型数组用0填充,char类型数组则使用null来填充);如果复制后的长度小于数组arr的长度,则会从数组arr的第一个元素开始截取至满足新数组长度为止。

安排一组代码,实现将此数组复制得到一个长度为5的新数组,并输出新数组
代码示例:

import java.util.Arrays;    //导包

public class Test31 {           //创建类
    public static void main(String[] args) {    //主方法
        int arr[] = new int[]{1,3,5};       //创建数组
        int newarr[] = Arrays.copyOf(arr,5);       //复制数组arr
        for (int i = 0; i < newarr.length; i++) {       //循环变量复制后的新数组
            System.out.println(newarr[i]);          //将新数组输出
        }
    }
}

运行结果:
在这里插入图片描述

4.2 copyOfRange()方法

该方法同样提供了多种重载方式。
语法:

copyOfRange(arr,int formIndex,int toIndex)
  • arr:要进行复制的数组
  • fromIndex:指定开始复制数组的索引位置。fromIndex必须在0至整个数组的长度之间。新数组包括索引是fromIndex的元素。
  • toIndex:要复制范围的最后索引位置。可大于数组arr的长度。新数组不包括索引是toIndex的元素

安排一段代码:创建一维数组,并且将数组中索引位置是0~5之间的元素复制到新数组中,最后将新数组输出。
代码示例:

import java.util.Arrays;        //导包

public class Test32 {           //创建类
    public static void main(String[] args) {    //主方法
        int arr[] = new int[]{1,3,5,7,9,11,13};     //创建数组
        int newarr[] = Arrays.copyOfRange(arr,0,3);     //复制数组
        for (int i = 0; i < newarr.length; i++) {       //遍历新数组
            System.out.print(newarr[i] + "\t");     //输出
        }
    }
}

运行结果:
在这里插入图片描述


五、数组查询

Arrays类的binarySecrch()方法可使用二分搜索法来搜索指定的数组以获得对象。该方法返回要搜索元素的索引值。binarySecrch()方法提供了多种重载形式用于满足各种类型数组查找需要,该方法有两种参数返回值。

5.1 binarySecrch(Object[],Object key)

语法:

binarySecrch(Object[]a,Object key)
  • arr:要搜索的数组
  • key:要搜索的值

如果key包含在数组中,则返回搜索值的索引,否则返回-1或者“-”(插入点)。插入点是搜索键将要插入数组的那一点,即第一个大于此键的元素索引。
例如:

int arr[] = new int[]{5,15,10};		//创建数组
Arrays.sort(arr);			//进行排序
Int index = Array.binarySearch(arr,0,1,3);

如果数组中的所有元素都小于指定的键,则为a.length。这保证了当且仅当此键被找到时,返回值将大于等于0。

走一段代码,一起感受一下。创建一个数组,实现查找元素4在数组中索引位置。
代码示例:

import java.util.Arrays;

public class Test33 {           //创建类
    public static void main(String[] args) {    //主方法
        int arr[] = new int[]{1,5,7,2,4,8};         //创建数组
        Arrays.sort(arr);                   //对数组进行排序
        int index = Arrays.binarySearch(arr,4);     //查找arr中元素4的索引位置
        System.out.println("4的索引位置是:" + index);      //输出

    }
}

运行结果:
4的索引就位置是进行排序后的索引位置。
在这里插入图片描述

注意:
必须在进行此调用之前使用sort()方法对数组进行排序,如果没有对数组进行排序,则结果是不确定的。如果数组包含多个带有指定值的元素,则无法保证找到的值是哪一个。

5.2 binarySearch(Object[] ,int fromIndex, int toIndex,Object key)

该方法在指定的范围内检索某一元素
语法:

binarySearch(Object[] arr,int fromIndex, int toIndex,Object key)
  • a:要进行检索的数组
  • fromIndex:指定范围的开始处索引(包含)
  • toIndex:指定范围的结束处索引(不包含)
  • key:要搜索的元素

使用该方法前同样要对数组进行排序来获得精确的索引值。如果要搜索的元素key在指定的范围内则返回搜索键的索引,否则返回-1或者“-”(插入点)。如果范围中所有元素都小于指定的键,则为toIndex。这保证了当且仅当此键被找到时,返回的值将大于等于0。

代码示例:

import java.util.Arrays;

public class Test34 {           //创建类
    public static void main(String[] args) {    //主方法
        String str[] = new String[]{"ab","ef","cd","mn"};       //创建数组
        Arrays.sort(str);           //对数组进行排序
        
        //在指定的范围内搜索元素“cd”的索引位置
        int index = Arrays.binarySearch(str,0,2,"cd");
        System.out.println("ef的索引位置是:" + index);        //输出
    }
}

运行结果:
在这里插入图片描述
注意:
如果指定范围大于或等于数组长度,则会爆出ArraysIndexOutOfBoundsException异常。


希望有所帮助!!!
关注我,持续更新!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

7旅病娘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值