欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Arrays的用法学习

程序员文章站 2022-03-11 21:50:03
...

概述

昨天解读源码时,看到了Arrays,今天来看下它的用法。基于JDK 1.7 之上。

学习

我们来学习下

1、asList方法

使用该方法可以返回一个固定大小的List,如:

public static void main(String[] args) {
List<String> stringList = Arrays.asList("Welcome", "Tom", "Java",
"World!");
List<Integer> intList = Arrays.asList(1, 2, 3, 4);
for (int i = 0; i < intList.size(); i++) {
System.out.print(intList.get(i)+"");
}
for (int i = 0; i < stringList.size(); i++) {
System.out.println(stringList.get(i));
}
}

结果为:

1234Welcome
Tom
Java
World!

### 2、binarySearch方法
binarySearch方法支持在整个数组中查找,如:

public static void main(String[] args) {
int index = Arrays.binarySearch(new int[] { 1, 2, 3, 4, 5, 6, 7 }, 6);
System.out.println(index+"");
}

结果为:

5

以及在某个区间范围内查找, 如:

public class MainView {

    /** 方法及参数
     * public static int binarySearch(int[] a, int fromIndex, int toIndex,
                                   int key) {
        rangeCheck(a.length, fromIndex, toIndex);
        return binarySearch0(a, fromIndex, toIndex, key);
    }
     */
    public static void main(String[] args) {
        int index = Arrays.binarySearch(new int[] { 1, 2, 3, 4, 5, 6, 7 }, 1, 6, 6);
        System.out.println(index+"");
    }
}

结果为:

5

3、copyOf及copyOfRange方法

如:

public static void main(String[] args) {
        String[] names2 = { "Tom", "John", "Alan", "Liz" };
        String[] copy = Arrays.copyOf(names2, 3);
        String[] rangeCopy = Arrays.copyOfRange(names2, 2,
            names2.length);
        for (int i = 0; i < copy.length; i++) {
            System.out.println(copy[i]);
        }
        System.out.println("----------");
        for (int i = 0; i < rangeCopy.length; i++) {
            System.out.println(rangeCopy[i]);
        }
    }

结果为:

Tom
John
Alan
----------
Alan
Liz

4、sort方法

public static void main(String[] args) {
        String[] names = { "Tom", "John", "Eric", "Alan" };
        Arrays.sort(names, 0, 2);
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
        System.out.println("----------");
        Arrays.sort(names);
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
    }

结果为:

John
Tom
Eric
Alan
----------
Alan
Eric
John
Tom

5、 toString方法

Arrays的toString方法可以方便我们打印出数组内容。
如:

public static void main(String[] args) {
        String[] names = { "Liz", "John", "Tom", "Alan" };
          Arrays.sort(names);
          System.out.println(Arrays.toString(names));
    }

结果为:

[Alan, John, Liz, Tom]

6.、deepToString方法

如果需要打印二维数组的内容:

int[][] stuGrades = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };

如果直接用

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

那么得到的结果类似于

[[[email protected]2a139a55, [[email protected]15db9742, [[email protected]6d06d69c]

这个时候得用 deepToString 方法才能得到正确的结果[[80, 81, 82], [84, 85, 86], [87, 88, 89]]

System.out.println(Arrays.deepToString(stuGrades));

结果为:

[[80, 81, 82], [84, 85, 86], [87, 88, 89]]

7、equals方法

使用Arrays.equals来比较1维数组是否相等

public static void main(String[] args) {
        String[] names1 = { "Tom", "John", "Alan", "Liz" };
        String[] names2 = { "Tom", "John", "Alan", "Liz" };
        System.out.println(Arrays.equals(names1, names2));
    }

结果为:

true

8、 deepEquals方法

Arrays.deepEquals能够去判断更加复杂的数组是否相等

public static void main(String[] args) {
        int[][] stuGrades1 = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
        int[][] stuGrades2 = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
        System.out.println(Arrays.deepEquals(stuGrades1, stuGrades2));
    }

结果为:

true

9、fill方法

fill方法可以给数组设置初始值

public static void main(String[] args) {
        int[] array1 = new int[8];
        Arrays.fill(array1, 1);
        System.out.println(Arrays.toString(array1));
    }

结果为:

[1, 1, 1, 1, 1, 1, 1, 1]

欢迎大家关注我的公众号

Arrays的用法学习

相关标签: arrays