Java:Arrays类

Posted 000紫外线000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:Arrays类相关的知识,希望对你有一定的参考价值。

java.utl包的Arrays类包含了用来操作数组的各种方法,本Blog就将介绍数组的各种操作。

Arrays类所在包

开头已经说了java.utl包中有Arrays类,所以如果要使用Arrays类的话,就要在开头先导入这个包中的这个类了。

import java.utl.Arrays

Arrays类填充替换数组元素

Arrays.fill(array, value);
Arrays.fill(array, from_index, to_index, value);

其实第一个fill方法很容易理解,就是将array数组的所有数值都赋值为value,就结束了。

而第二种fill方法也只是加了一个范围,即让array[from_index] ~ array[to_index - 1]的所有值赋值为value,这里务必记住这个范围不包含array[to_index]这个数。

package base;
import java.util.Arrays;

public class Arrays_fill
{
    public static void main(String[] args)
    {
        int a[] = new int[10];
        Arrays.fill(a, 999);
        for (int i = 0; i < a.length; i++)
            System.out.print(a[i] + " ");
        System.out.println();
        
        Arrays.fill(a, 3, 3 + 4 + 1, 100);
        for (int i = 0; i < a.length; i++)
            System.out.print(a[i] + " ");
        System.out.println();
    }
}

Arrays类对数组进行排序

Arrays.sort(array);
Arrays.sort(array, from_index, to_index);

方法很容易理解,第一个方法使用就是直接对数组array进行从小到大的快速排序,而第二个方法只不过是规定了一个范围,即对数组array的array[from_index] ~ array[to_index - 1]进行排序,记住这里是不包含array[to_index]这个数的哟。

package base;
import java.util.Arrays;

public class Arrays_sort
{
    public static void main(String[] args)
    {
        int a[] = {4, 3, 6, 5, 1, 2};
        Arrays.sort(a);
        for (int i = 0; i < a.length; i++)
            System.out.print(a[i] + " ");
        System.out.println();
        
        a = new int[]{4, 3, 6, 5, 1, 2};
        Arrays.sort(a, 2, 5 + 1);
        for (int i = 0; i < a.length; i++)
            System.out.print(a[i] + " ");
        System.out.println();
    }
}

Arrays类复制数组

Arrays.copyOf(array, to_index);
Arrays.copyOfRange(array, from_index, to_index);

第一个方法其实就是返回一个数组,而这个数组就等于数组array的前to_index个数,也就是array[0] ~ array[to_index - 1]。

而第二种方法也只是加了一个初始的位置,即返回一个数组等于array[from_index] ~ array[to_index - 1]。

这里要注意一下,不管是上面哪种使用方法,都务必记住范围是不包含array[to_index]这个数。

package base;
import java.util.Arrays;

public class Arrays_copyOf
{
    public static void main(String[] args)
    {
        int a[] = {4, 3, 6, 5, 1, 2};
        int b[] = Arrays.copyOf(a, 4);
        int c[] = Arrays.copyOfRange(a, 2, 4 + 1);
        
        for (int i = 0; i < b.length; i++)
            System.out.print(b[i] + " ");
        System.out.println();
        
        for (int i = 0; i < c.length; i++)
            System.out.print(c[i] + " ");
        System.out.println();
    }
}

Arrays类查询数组

Arrays.binarySearch(array, value);
Arrays.binarySearch(array, from_index, to_index, value);

这里Arrays.binarySearch方法中的数组array必须是从小到大排好序的,这点务必注意,因为其实这个方法是用二分算法实现的。如果你的数组并不是有序的,请先调用Arrays.sort方法对其进行排序,再去二分查找。

这里先说第一行的方法,就是在array数组中去找寻value值最后一次出现所在的索引位置。而如果array数组中根本没有value这个值,会返回一个负数。

再说第二个方法,其实就是加了个搜索的范围,即在array[from_index] ~ array[to_index - 1]中去找寻value值最后一次出现的索引位置,没有找到的话会返回一个负数。这里务必注意,范围是不包含array[to_index]的。

package base;
import java.util.Arrays;

public class Arrays_binarySearch
{
    public static void main(String[] args)
    {
        int a[] = {0, 1, 1, 3, 3, 4, 4, 4, 6, 8}; // 这里a数组必须是有序的,否则无法使用binarySearch。
        System.out.println(Arrays.binarySearch(a, 4));
        System.out.println(Arrays.binarySearch(a, 5));
        System.out.println(Arrays.binarySearch(a, 2, 5 + 1, 3));
        System.out.println(Arrays.binarySearch(a, 2, 5 + 1, 8));
    }
}

以上是关于Java:Arrays类的主要内容,如果未能解决你的问题,请参考以下文章

Java 中Arrays工具类的使用

Java常用类之数组工具类Arrays

15Java常用类(数组工具类Arrays)基本类型包装类(Integer类)正则表达式String的split(String regex)和replaceAll(String regex, (代码片

Java 中Arrays工具类的使用

Arrays类--Arrays.asList()方法使用

Java中数组操作 java.util.Arrays 类常用方法的使用