简述Arrays工具类

本人小白一枚,欢迎大家一起讨论学习,如有错误,还望大家指教。

Arrays用于操作数组的工具类,里面的方法都是静态。
sort(T[] a, Comparator<? super T> c) 根据指定比较器产生的顺序对指定对象数组进行排序。
sort(Object[] a) 根据元素的自然顺序对指定对象数组按升序进行排序。

public class Demo1 {
    public static void main(String[] args) {
        String[] arr = {"abc", "cc", "kkkk", "aa"};
        // 按照默认默认比较器
        Arrays.sort(arr);
        System.out.println(Arrays.asList(arr));
        // 按照自定义比较器排序
        Arrays.sort(arr, new MyCompare());
        System.out.println(Arrays.asList(arr));
    }
}

/**
 * 自定义比较器,按长度排序
 */
class MyCompare implements Comparator<String> {

    @Override
    public int compare(String str1, String str2) {
        int num = str1.length() - str2.length();
        if (num == 0) {
            return str1.compareTo(str2);
        }
        return num;
    }
}

[aa, abc, cc, kkkk]
[aa, cc, abc, kkkk]

asList(T... a) 返回一个受指定数组支持的固定大小的列表。
注意:此方法会将数组变成list集合,但我们知道数组的长度是固定的,所以我们将数组变成集合后,不可以使用集合中的增删方法。如果我们进行增删操作,会发生UnsupportedOperationException
在这里插入图片描述
我们可以把数组变成集合,但我们能不能把集合变成数组呢?java在Collection接口为我们提供了toArray方法。

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        Collections.addAll(list, "aaa", "bbb", "ccc");
        // 打印集合
        System.out.println("集合:" + list);
        String[] str = new String[2];
        /**
         * 指定类型的数组的长度要定义多长呢?
         * 当指定类型的数组小于了集合的size,那么该方法内部会创建一个新的数组。
         * 该集合的长度为size。
         * 当指定类型的数组长度大于了集合的size,就不会创建了数组。而是使用传递进来的数组。
         * 所以创建一个刚刚好的数组最优
         * 为什么要将集合变成数组呢?
         * 为了限定对元素的操作,不需要进行增删了。
         */
        // String[] str = list.toArray(new String[list.size()]);
        str = list.toArray(str);
        // 打印数组
        System.out.println("数组:" + Arrays.toString(str));
    }

集合:[aaa, bbb, ccc]
数组:[aaa, bbb, ccc]

注意:在使用高级for循环对集合进行遍历时,只能获取集合元素,但是不能对集合进行操作。用迭代器遍历时,迭代器除了遍历,还可以对集合中的元素进行remove操作,如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值