为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不讲Arrays 类其他的用法,比如equals,deepEquals,fill,copyOf 等,这些也需要用到啊?

为什么不讲Arrays 类其他的用法,比如equals,deepEquals,fill,copyOf 等,这些也需要用到啊?有没有亲能举例讲一下呢?

正在回答

5 回答

1、toString

转换数组:将指定数组内容转换为字符串形式

2、fill

给数组赋值:通过fill方法。

3、sort

对数组排序:通过sort方法,默认按升序。

4、equals

比较数组:通过equals方法比较数组中元素值是否相等。

5、binarySearch

二分查找:使用二分搜索法来搜索指定数组的范围

 

示例代码:

import java.util.Arrays;

public class HelloWorld {

    public static void main(String[] args) {

       int[] array = new int[5];

       // 填充数组

       /* Arrays.fill( a1, value );

         作用:填充 a1 数组中的每个元素都是value

       */

       Arrays.fill(array, 5);

       System.out.println("填充数组:Arrays.fill(array, 5):");

       System.out.println(Arrays.toString(array));

 

       // 将数组的第3和第4个元素赋值为8

       /* Arrays.fill( a1, fromIndex, toIndex,value);

         作用:填充 a1 数组中的从索引为 fromIndex 开始到索引为 toIndex-1 为止每个元素都是 value

       */

       Arrays.fill(array, 2, 4, 8);

       System.out.println("将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8):");

       System.out.println(Arrays.toString(array));

      

       int[] array1 = { 7, 8, 3, 2, 12, 6, 3, 5, 4 };

       // 对数组的第3个到第7个进行排序

       /* Arrays.sort( a1, fromIndex, toIndex);

         作用:对 a1 数组中的从索引为 fromIndex 开始到索引为 toIndex-1 为止每个元素排序

       */

       Arrays.sort(array1, 2, 7);

       System.out.println("对数组的第2个到第6个元素进行排序:Arrays.sort(array,2,7):");

       System.out.println(Arrays.toString(array1));

 

       // 对整个数组进行排序

       Arrays.sort(array1);

       System.out.println("对整个数组进行排序:Arrays.sort(array1):");

       System.out.println(Arrays.toString(array1));

 

       // 比较数组元素是否相等

       System.out.println("比较数组元素是否相等:Arrays.equals(array, array1):" + "\n"

              + Arrays.equals(array, array1));

       int[] array2 = array1.clone();

       System.out.println("克隆后数组元素是否相等:Arrays.equals(array1, array2):" + "\n"

              + Arrays.equals(array1, array2));

 

       // 使用二分搜索算法查找指定元素所在的下标(必须是排序好的,否则结果不正确)

       Arrays.sort(array1);

       System.out.println("元素3在array1中的位置:Arrays.binarySearch(array1, 3):"

              + "\n" + Arrays.binarySearch(array1, 3));

 

       // 如果不存在就返回负数

       System.out.println("元素9在array1中的位置:Arrays.binarySearch(array1, 9):"

              + "\n" + Arrays.binarySearch(array1, 9));

    }

}

 

运行结果:

填充数组:Arrays.fill(array, 5):
[5, 5, 5, 5, 5]
将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8):
[5, 5, 8, 8, 5]
对数组的第2个到第6个元素进行排序:Arrays.sort(array,2,7):
[7, 8, 2, 3, 3, 6, 12, 5, 4]
对整个数组进行排序:Arrays.sort(array1):
[2, 3, 3, 4, 5, 6, 7, 8, 12]
比较数组元素是否相等:Arrays.equals(array, array1):
false
克隆后数组元素是否相等:Arrays.equals(array1, array2):
true
元素3在array1中的位置:Arrays.binarySearch(array1, 3):
1
元素9在array1中的位置:Arrays.binarySearch(array1, 9):
-9

关于deepEquals和equals都是Java中Arrays类的两个静态方法

1、deepEquals用于判定两个指定数组彼此是否深层相等,此方法适用于任意深度的嵌套数组。

2、equals用于判定两个数组是否相等,如果两个数组以相同顺序包含相同元素,则返回true,否则返回false。

关于copyOf

copyOf()方法,可以直接传回一个新的数组对象,而当中包括复制的内容,例如:

ArrayDemo.java

import java.util.Arrays;public class ArrayDemo {public static void main(String[] args) {int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOf(arr1, arr1.length);for(int i = 0; i < arr2.length; i++)
System.out.print(arr2[i] + " ");
System.out.println();
}
}

执行结果:

1 2 3 4 5

Arrays的copyOf()方法传回的数组是新的数组对象,所以您改变传回数组中的元素值,也不会影响原来的数组。

copyOf()的第二个自变量指定要建立的新数组长度,如果新数组的长度超过原数组的长度,则保留数组默认值,例如:

ArrayDemo.java

import java.util.Arrays;public class ArrayDemo {public static void main(String[] args) {int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOf(arr1, 10);for(int i = 0; i < arr2.length; i++)
System.out.print(arr2[i] + " ");
System.out.println();
}
}

执行结果:

1 2 3 4 5 0 0 0 0 0


1 回复 有任何疑惑可以回复我~
#1

你像风一样 提问者

不要WIKI的回答,正因为看不明白才提问的,可以像教程那样易懂的讲下吗?最好附上例子,谢谢~
2016-06-29 回复 有任何疑惑可以回复我~
#2

mjka5632 回复 你像风一样 提问者

其实这几种方法用的真的不多!感觉没必要那么全面的了解!学了两三年基本没用过这几个
2016-06-29 回复 有任何疑惑可以回复我~
#3

你像风一样 提问者

好吧,谢谢你了~
2016-06-30 回复 有任何疑惑可以回复我~
查看1条回复

感谢楼主分享     

0 回复 有任何疑惑可以回复我~

感谢楼主分享     

0 回复 有任何疑惑可以回复我~

感谢楼主分享     

0 回复 有任何疑惑可以回复我~

是的,深有同感。求拓展!!!

0 回复 有任何疑惑可以回复我~
#1

你像风一样 提问者

恩啊!不懂特来求问~
2016-06-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么不讲Arrays 类其他的用法,比如equals,deepEquals,fill,copyOf 等,这些也需要用到啊?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号