集合..

发布时间:2024年01月22日

1.集合

java.util中包含一个集合框架 里面内置了很多的数据结构 比如:ArrayList、List、HashMap等等
数据结构是储存和组织数据的方式 但是这边我们重点讲的是如何使用 而并非如何实现 我以往的笔记中有讲到如何实现

2.ArrayList使用

1.数组的局限性

1.无法动态扩容
在数组创建以后 就不能随意修改数组容量
2.操作元素过程中不够面向对象
数组内置的数组操作太少了 所以不够面向对象 比如不能够如ArrayList一样通过remove(int index)删除指定位置处的元素

这样一对比的话 那么动态数组的好处自然就多了:
1.他是一个可以动态扩容的数组
2.他里面封装了很多操作数组元素的方法

2.ArrayList的常用方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以下是一个案例:
如果对一个原始类型进行数组的添加操作的话 那么他支持添加所有类型的元素 因为原始类型会将泛型替换成Object类型 但是其实这种做法不推荐 推荐的是写明泛型的具体类型
在这里插入图片描述

1.retainAll方法

list1.retainAll(list2)强调删除list1中除了list2以外的所有元素

public class Main {
    public static void main(String[] args) {
        List<Integer> list1 = new ArrayList<>();
        list1.add(11);
        list1.add(22);
        list1.add(33);
        List<Integer> list2 = new ArrayList<>();
        list2.add(22);
        list2.add(44);
        list1.retainAll(list2);
        System.out.println(list1);
    }
}

我们可以从结果得出 list1真的删除了list2以外的所有元素

2.toArray方法

该方法就是将动态数组转换成普通数组
根据对象数组的特点 我们不能够让子类引用指向父类对象
下面这个代码是可以编译通过的 我想提一嘴的就是 toArray()方法的返回值是Object[]类型

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(11);
        list.add(22);
        list.add(33);
        Object[] array1 = list.toArray();
        System.out.println(array1);
        System.out.println(Arrays.toString(array1));
    }
}

由于toArray()的返回值是Object[]类型的 所以你不能够将其赋值给Integer[]类型的数组 就算强转也不行 是因为子类引用不能够指向父类对象 否则会报ClassCastException异常

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(11);
        list.add(22);
        list.add(33);
        Integer[] array1 = (Integer[])list.toArray();
        System.out.println(array1);
        System.out.println(Arrays.toString(array1));
    }
}

但是如果非要将Object类型的数组赋值给Integer类型的数组 也不是不行 toArray有一个重载方法 支持传入一个类型参数(泛型) 返回相同类型的返回值
我们只需要传入一个没有开辟空间的Integer数组即可 那么现在就可以返回一个Integer类型的数组 也无需进行强转操作了

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(11);
        list.add(22);
        list.add(33);
        Integer[] array1 = list.toArray(new Integer[0]);
        System.out.println(array1);
        System.out.println(Arrays.toString(array1));
    }
}
文章来源:https://blog.csdn.net/m0_71299382/article/details/135741597
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。