Arrays工具类的常见方法总结

1.Arrays.asList( )

Arrays.asList() 是 Java 标准库中的一个静态方法,用于将数组转换为 List
参数:asList​(T… a)
返回值:一个列表

    public void asListTest() {
        List<String> ss = Arrays.asList("hello", "world");
//        List<String> ss1 = Arrays.asList("hello", "world",1);   报错,类型必须一直(泛型)
        System.out.println(ss);  //[hello, world]
        
//        ss.add("java");  //UnsupportedOperationException  会报错
//        ss.remove(1);   //UnsupportedOperationException  会报错
        
        System.out.println(ss.get(0));  //hello
        ss.set(0, "java");
        System.out.println(ss);  //[java, world]

    }

将数组转换为列表后,对应的列表是不支持添加和删除操作的,否则会报错,但可以修改和获取元素。

2.Arrays.binarySearch( )

        可以通过调用Arrays.binarySearch()的方法,进行查找:由于该方法是基于二分查找法实现,数组必须处于有序状态。所以,需要先对数组进行排序,然后再通过Arrays.binarySearch()进行查找。binarySearch()方法提供多种重载形式,用于满足各种类型数组的查找需要。

2.1  binarySearch(Object[], Object key)

a: 要搜索的数组

key:要搜索的值

如果key在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素的索引。

       int arr [] =newint[]{1,3,4,5,8,9};

        Arrays.sort(arr);

       int index1 = Arrays.binarySearch(arr,6);

       int index2 = Arrays.binarySearch(arr,4);

       int index3 = Arrays.binarySearch(arr,0);

       int index4 = Arrays.binarySearch(arr,10);

        System.out.println("index1 = "+ index1 +", index2 = " + index2 +

                        ", index3 = " + index3 +", index4 = "+ index4);

结果:index1= -5, index2 = 2, index3 = -1, index4 = -7

2.2 binarySearch(Object[], int fromIndex, int toIndex, Object key)

a:要搜索的数组

fromIndex:指定范围的开始处索引(包含)

toIndex:指定范围的结束处索引(不包含)

key:要搜索的值

如果要搜索的元素key在指定的范围内,则返回搜索值的索引;否则返回-1或“-”(插入点)。

int arr [] =newint[]{1,3,4,5,8,9};

        System.out.println(arr.length+1);

        Arrays.sort(arr);

       int index5 = Arrays.binarySearch(arr,1, 4, 6);

       int index6 = Arrays.binarySearch(arr,1, 4, 4);

       int index7 = Arrays.binarySearch(arr,1, 4 ,2);

       int index8 = Arrays.binarySearch(arr,1, 3, 10);

       int index9 = Arrays.binarySearch(arr,1, 3, 0);

        System.out.println("index5 = "+ index5 +", index6 = " + index6 +

                        ", index7 = " + index7 +", index8 = "+ index8 +

                     ", index9 = " + index9);

结果:index5 = -5, index6 = 2,index7 = -2, index8 = -4, index9 = -2


3.Arrays.copyOf( )

功能:复制填充数组,从原数组0位置开始拷贝指定长度到新数组
参数:copyOf​(int[] original, int newLength)…
           copyOf​(T[] original, int newLength)
返回值:复制填充后的数组

4.Arrays.copyOfRange( )

功能:复制填充数组,从原数组中指定范围拷贝到新数组
如果指定长度或者范围超出原数组范围,则超出部分会补上此数据类型的默认值,如String类型会补null,int型会补0
参数:copyOfRange​(int[] original, int from, int to)…
copyOfRange​(T[] original, int from, int to)
copyOfRange​(U[] original, int from, int to, 类<? extends T[]> newType)
返回值:复制填充后的数组

5.Arrays.fill( )

Java标准库中的Arrays.fill( ),将指定元素填充给数组每一个元素
参数:fill​(int[] a, 【int fromIndex, int toIndex】, int val)
返回值:无

    @Test
    public void fillTest() {
        String[] a = {"a", "b", "c", "d", "e", "f"};
        System.out.println(Arrays.toString(a));  //[a, b, c, d, e, f]
        Arrays.fill(a, "java");
        System.out.println(Arrays.toString(a));  //[java, java, java, java, java, java]

        String[] b = {"a", "b", "c", "d", "e", "f"};
        System.out.println(Arrays.toString(b));  //[a, b, c, d, e, f]
        Arrays.fill(b, 2, 5, "java");
        System.out.println(Arrays.toString(b));  //[a, b, java, java, java, f]
        
        //默认全填充,也可以指定范围,会改变原数组
    }

6.Arrays.sort( )

Java标准库中的Arrays.sort(),可以排序:

参数:要排序的数组

返回值:无返回值

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] ns = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 };
        
        // 排序前
        System.out.println("排序前:" + Arrays.toString(ns));
        
        // 排序
        Arrays.sort(ns);
        
        // 排序后
        System.out.println("排序后:" + Arrays.toString(ns));
    }
}

必须注意,对数组排序实际上修改了数组本身。


7.Arrays.toString( )

Java标准库中的Arrays.toString(),可进行快速打印数组内容:

参数:数组

返回值:字符串

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] cityArray = { "郑州", "广州", "苏州", "赣州", "儋州" };
        double[] dataArray = { 3.4, 7.8, 4.7, 8.9 };
        int[] numberArray1 = { 4, 11, 6, 8, 9, 23 };
        int[] numberArray2 = { 4, 11, 6, 8, 9, 23 };
        
        // 打印数组内容:
		// Arrays类的toString()方法作用:将字符串数组中的所有元素,拼接成一个完整字符串
        String str1 = Arrays.toString(cityArray);
		System.out.println(str1);
        
		System.out.println(Arrays.toString(dataArray));
		System.out.println(Arrays.toString(numberArray1));
		System.out.println(Arrays.toString(numberArray2));
    }
}

  • 27
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值