• 那是从何处传来的钟声呢?偶尔听到那钟声,平添一份喜悦与向往之情。

Java中的Arrays类使用详解

后端 Nanait 13年前 (2012-06-10) 1186次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

首先先创建一个打印数组的方法,方便后面直接使用

  1. public static void output(int []a) {
  2.         for(int i=0;i<a.length;i++) {
  3.             System.out.printf(a[i]+” “);
  4.         }
  5.         System.out.println();
  6. }

1、填充数组:fill

eg1.

  1. int []arr = new int[5];
  2. Arrays.fill(arr, 2);
  3. output(arr);

结果是:2 2 2 2 2

分析:给所有值赋值 2

eg2.

  1. int []arr = new int[5];
  2. Arrays.fill(arr, 1,3,8);
  3. output(arr);

结果是:0 8 8 0 0

分析:给第 1 位(0 开始)到第 3 位(不包括)赋值 8

 

2、数组元素排序:sort

eg1.

  1. int []arr = {3,2,1,5,4};
  2. Arrays.sort(arr);
  3. output(arr);

结果是:1 2 3 4 5

分析:给所有数按升序排序

eg2.

  1. int []arr = {3,2,1,5,4};
  2. Arrays.sort(arr,1,3);
  3. output(arr);

结果是:3 1 2 5 4

分析:给第 1 位(0 开始)到第 3 位(不包括)排序

 

3、比较数组元素是否相等:equals

  1. int []arr1 = {1,2,3};
  2. int []arr2 = {1,2,3};
  3. System.out.println(Arrays.equals(arr1,arr2));

结果是:true

分析:如果是 arr1.equals(arr2),则返回 false,因为 equals 比较的是两个对象的地址,不是里面的数,而 Arrays.equals 重写了 equals,所以,这里能比较元素是否相等。

这里补充一下,如果还是不用 Arrays.equals,那么我们应该如何重写 equals 来比较两个数组的元素是否相等呢?这里提供一段代码

  1. //Compare the contents of two int arrays
  2.     public static boolean isEquals(int[] a, int[] b)
  3.     {
  4.         if( a == null || b == null )
  5.         {
  6.             return false;
  7.         }
  8.         if(a.length != b.length)
  9.         {
  10.             return false;
  11.         }
  12.         for(int i = 0; i < a.length; ++i )
  13.         {
  14.             if(a[i] != b[i])
  15.             {
  16.                 return false;
  17.             }
  18.         }
  19.         return true;
  20.     }

 

4、二分查找法找指定元素的索引值(下标):binarySearch

数组一定是排好序的,否则会出错。找到元素,只会返回最后一个位置

eg1:

  1. int []arr = {10,20,30,40,50};
  2. System.out.println(Arrays.binarySearch(arr, 20));

结果是:1

分析:能找到该元素,返回下标为 1(0 开始)

eg2:

  1. int []arr = {10,20,30,40,50};
  2. System.out.println(Arrays.binarySearch(arr, 35));

结果是:-4

分析:找不到元素,返回-x,从-1 开始数,如题,返回-4

eg3:

  1. int []arr = {10,20,30,40,50};
  2. System.out.println(Arrays.binarySearch(arr, 0,3,30));

结果是:2

分析:从 0 到 3 位(不包括)找 30,找到了,在第 2 位,返回 2

eg4:

  1. int []arr = {10,20,30,40,50};
  2. System.out.println(Arrays.binarySearch(arr, 0,3,40));

结果是:-4

分析:从 0 到 3 位(不包括)找 40,找不到,从-1 开始数,返回-4

 

5、截取数组:copeOf 和 copeOfRange

eg1: copy

  1. int []arr = {10,20,30,40,50};
  2. int []arr1 = Arrays.copyOf(arr, 3);
  3. output(arr1);

结果:10 20 30

分析:截取 arr 数组的 3 个元素赋值给姓数组 arr1

eg2:  copyOfRange

  1. int []arr = {10,20,30,40,50};
  2. int []arr1 = Arrays.copyOfRange(arr,1,3);
  3. output(arr1);

结果:20 30

分析:从第 1 位(0 开始)截取到第 3 位(不包括)

 

6、其他

还有 hashCode,toString,clone 等这里就不介绍了,暂时用的少


何处钟 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java 中的 Arrays 类使用详解
喜欢 (1)
[15211539367@163.com]
分享 (0)

您必须 登录 才能发表评论!