JAVA的Arrays数组的运用

JAVA中提供Arrays类协助我们对数组的一些基本操作。像排序、搜索与比较等是很常见的。

package JAVA_Project_01_04;//创建一个包
/*
赋值:当配置一个数组之后,会依据类型来给定默认值。可以使用Arrays.fill()方法将所有元素设定为指定的值。
排序:sort()方法帮助对指定的数组排序,所使用的是快速排序法。
查找元素:binarySearch()对已排序的数组进行二分搜索,如果找到指定的值就会返回true,否则返回false.
深层比较:deepEquals()对数组作深层次比较,简单的说,可以对二维乃至三维以上的数组进行比较,判断是否相等
深层输出:将数组值作深层输出,简单的说,可以对二维乃至三维以上的数组输出其字符串值。
 */
import java.util.Arrays;
import java.util.Scanner;//引入类

public class TextArray {//操作Arrays方法的类
    public static void arraysSortAndSearch() {//使用Arrays对数组排序与搜索
        int[] arr = {93, 5, 3, 55, 57, 7, 2, 73, 41, 91};//声明数组初始化
        System.out.print("排序前");
        for (int i = 0; i < arr.length; i++)//循环显示数组元素
            System.out.print(arr[i] + "");
            System.out.println();
            Arrays.sort(arr);
            System.out.print("排序后");
            for (int i = 0; i < arr.length; i++)
                System.out.print(arr[i] + "");
            System.out.println("\n请输入搜索值:");
            Scanner scan = new Scanner(System.in);//接受键盘输出的值
            int number = scan.nextInt();//接受一个整数
            int find = -1;
            if ((find = Arrays.binarySearch(arr, number)) > -1) {//判断是否找到搜索数字
                System.out.println("找到值的索引在第" + find + "位置");
            } else
                System.out.println("找不到指定值");
    }
    public static void arraysCompareAndFill(){//使用Arrays数组填充与比较
        int[] arr1=new int[10];//声明数组
        int[] arr2=new int[10];
        int[] arr3=new int[10];
        Arrays.fill(arr1,5);//将数组arr1的元素填充为5
        Arrays.fill(arr2,5);//将数组arr2的元素填充为5
        Arrays.fill(arr3,10);//将数组arr3的元素填充为10
        System.out.print("数组arr1中的元素为:");
        for (int i = 0; i < arr1.length; i++)
            System.out.print(arr1[i]+"");
            System.out.println("\narr1=arr2?"+Arrays.equals(arr1,arr2));//判断数组arr1与arr2是否相等
            System.out.println("arr1=arr3?"+Arrays.equals(arr1,arr3));//判断数组arr1与arr3是否相等
    }
    public static void deepCompareAndDeepToString(){//使用深层比较和深层输出
        int[][] arr1={{1,2,3},{4,5,6},{7,8,9}};//声明三维数组
        int[][] arr2={{1,2,3},{4,5,6},{7,8,9}};
        int[][] arr3={{0,1,3},{4,6,4},{7,8,9}};
        System.out.println("数组arr1内容等于数组arr2?"+Arrays.deepEquals(arr1,arr2));//深层比较数组arr1和数组arr2
        System.out.println("数组arr1内容等于数组arr3?"+Arrays.deepEquals(arr1,arr3));//深层比较数组arr1与数组arr3
        System.out.println("数组arr1深沉输出(deepToString())\n\t"+Arrays.deepToString(arr1));//深层输出数组arr1
    }

    public static void main(String[] args) {//JAVA程序主入口
        System.out.println("1.使用Arrays类的填充和比较方法:");
        arraysCompareAndFill();//调用填充与比较方法
        System.out.println("2.使用Arrays类的深沉比较和深沉输出方法:");
        deepCompareAndDeepToString();
        System.out.println("3.使用Arrays类的排序与搜索方法:");
        arraysSortAndSearch();//调用排序与搜索方法
    }
}
/*
(1)arraysSortAndSearch()方法对数组进行排序和搜索。sort()方法可以对整个数组进行排序,也可以根据数组起始位置与结束位置之间元素进行排序。
语法:Arrays.sort(数组,起始位置,结束位置).应该注意的是:即如果数组中间元素的值比查找元素大,则只会从数组的前半部分元素中查找,
否则只从数组的后半部分元素中查找,如此递归下去。因此,在查找元素前必须对数组元素进行升序排序。返回的是查找元素的下标值。如果在数组中找不到元素
则返回负数。
(2)arraysCompareAndFill()方法对数组进行填充和比较。fill()方法可以对整个数组附以初值,也可以指定位置进行赋值。数组arr1与数组arr2元素值相同。
但实际上arr1与arr2是引用自不同的两个组的对象。equals()方法用来比较元素值是否相同。不可以用==来比较两个数组的元素值是否相等。
(3)deepCompareAndDeepToString()方法是对多维数组元素的值进行深层比较和输出。方法使用于任意深度的嵌套数组。如果两个数组引用均为null,
或者它们引用了包含相同元素数量的数组,并且两个数组中的所有相应元素对都是深层相等的,则认为这两个数组引用是深层相等的。数组arr1于数组arr2
的相应元素对都是深层相等的,所以进行深层比较之后,返回true。如果满足以下任一条件,则两个null元素e1和e2可以是深层相等的。
e1和e2都是对象引用类型的数组,并且Arrays.deepEquals(e1,e2)将返回true.
e1和e2都是相同基本类型的数组,并且Arrays.equals(e1,e2)的适当重载将返回true。
e1.equals(e2)将返回true.
如果指定数组中的任一数组,直接或间接通过一个或多个数组级别,包含数组本身作为其元素,则此方法的行为是不确定的。
 */




发布了70 篇原创文章 · 获赞 10 · 访问量 3198

猜你喜欢

转载自blog.csdn.net/JN_Cat/article/details/102655515