欢迎来到 Kong Xiangqun 的博客

15、集合框架_ArrayList

一、为什么使用集合框架

 

 

 Collection存放单一一个值, Map存放的是k-v键值对

二、Collection 接口

1、增加

接口是不能实例化的,我们这new ArrayList

add:要求必须传入的参数是Object对象,因此当写入基本数据类型的时候,包含了自动拆箱和自动装箱的过程

特点:

1、可以存放不同类型的数据,而数组只能存放固定类型的数据
2、当使用arraylist子类实现的时候,初始化的长度是10,当长度不够的时候会自动进行扩容操作
public class CollectionDemo {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add(1);
        collection.add(true);
        collection.add(1.23);
        collection.add("abc");
        System.out.println(collection);
    }
}

 

public class CollectionDemo {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add(1);
        collection.add(true);
        collection.add(1.23);
        collection.add("abc");
        System.out.println(collection);
        ((ArrayList) collection).add(0,"aaa"); // 强制类型转换
        System.out.println(collection);
    }
}

 

 addall():  添加另一个集合的元素到此集合中

public class CollectionDemo {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add(1);
        collection.add(true);
        collection.add(1.23);
        collection.add("abc");
        System.out.println(collection);
        ((ArrayList) collection).add(0,"aaa");
        System.out.println(collection);
        Collection collection1 = new ArrayList();
        collection1.add("a");
        collection1.add("b");
        collection1.add("c");
        collection1.add("d");
        collection.addAll(collection1);
        System.out.println(collection);
    }
}

2、删除

clear:只是清空集合中的元素,但是此集合对象并没有被回收

public class CollectionDemo {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add(1);
        collection.add(true);
        collection.add(1.23);
        collection.add("abc");
        collection.clear();
        System.out.println(collection);
    }
}

remove:删除指定元素

public class CollectionDemo {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add(1);
        collection.add(true);
        collection.add(1.23);
        collection.add("abc");
        collection.remove("a");
        System.out.println(collection);
    }
}

removeAll:删除集合元素

3、查询数据的方法

3.1、contains:判断集合中是否包含指定的元素值

public class CollectionDemo {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add(1);
        collection.add(true);
        collection.add(1.23);
        collection.add("abc");
        System.out.println(collection);
        ((ArrayList) collection).add(0,"aaa");
        System.out.println(collection);
        Collection collection1 = new ArrayList();
        collection1.add("a");
        collection1.add("b");
        collection1.add("c");
        collection1.add("d");
        collection.addAll(collection1);
        System.out.println(collection);
        System.out.println(collection.contains("a"));
        System.out.println(collection.containsAll(collection1));
    }
}

 3.2、containsAll:判断此集合中是否包含另一个集合

public class CollectionDemo {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add(1);
        collection.add(true);
        collection.add(1.23);
        collection.add("abc");
        System.out.println(collection);
        ((ArrayList) collection).add(0,"aaa");
        System.out.println(collection);
        Collection collection1 = new ArrayList();
        collection1.add("a");
        collection1.add("b");
        collection1.add("c");
        collection1.add("d");
        collection.addAll(collection1);
        System.out.println(collection);
        System.out.println(collection.contains("a"));
        System.out.println(collection.containsAll(collection1));
    }
}

3.3、isEmpty:判断集合是否等于空

public class CollectionDemo {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add(1);
        collection.add(true);
        collection.add(1.23);
        collection.add("abc");
        System.out.println(collection);
        ((ArrayList) collection).add(0,"aaa");
        System.out.println(collection);
        System.out.println(collection.contains("a"));
        System.out.println(collection.isEmpty());
    }
}

 3.4、retainAll:若集合中拥有另一个集合的所有元素,返回true,否则返回false

public class CollectionDemo {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add(1);
        collection.add(true);
        collection.add(1.23);
        collection.add("abc");
        System.out.println(collection);
        ((ArrayList) collection).add(0,"aaa");
        System.out.println(collection);
        Collection collection1 = new ArrayList();
        collection1.add("a");
        collection1.add("b");
        collection1.add("c");
        collection1.add("d");
        collection.addAll(collection1);
        System.out.println(collection1.retainAll(collection));
    }
}

 3.5、size:返回当前集合的大小

 3.6、集合转换为数组 toArray

Object[] objects = collection.toArray();

.var回车自动补全类型

3、List与Set接口

▪ Collection 接口存储一组不唯一无序的对象
▪ List 接口存储一组不唯一有序(插入顺序)的对象
▪ Set 接口存储一组唯一无序的对象
▪ Map接口存储一组键值对象,提供key到value的映射

 

 

 4、List接口的实现类

▪ List特点:有序,不唯一(可重复)

 

▪ ArrayList实现了长度可变的数组,在内存中分配连续的空间。
  – 优点:遍历元素和随机访问元素的效率比较高
  – 缺点:添加和删除需要大量移动元素效率低,按照内容查询效率低

▪ LinkedList采用链表存储方式。
  – 优点:插入、删除元素时效率比较高
  – 缺点:遍历和随机访问元素效率低下

 List接口特有的方法:

 

 

public class ListDemo {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("a");
        list.add(1);
        list.add("a");
        list.add(true);
        System.out.println(list);
//        System.out.println(list.get(3));
        System.out.println(list.indexOf("a"));
        System.out.println(list.lastIndexOf("a"));
        list.set(0,"aaa");
        System.out.println(list);
        List list1 = list.subList(0, 2);
        System.out.println(list1);
//        List of = List.of(1,2,3,4);
//        System.out.println(of);
    }
}

打印结果为:

/*
[a, 1, a, true]
0
2
[aaa, 1, a, true]
[aaa, 1]

Process finished with exit code 0
*/
posted @ 2022-04-25 21:19  kongxiangqun20220317  阅读(23)  评论(0编辑  收藏  举报