• 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
    */
  • 相关阅读:
    多线程编程
    JQuery模板数据分组
    一些js的基本操作
    64位 ubuntu14 jdk1.7 编译 hadoop2.90 中遇到的一些问题回顾
    [错误]ClassLoaderReference class not found
    [java基础][字符串]由字符串常量池引发的思考
    my.ini修改后启动失败
    FastDFS是使用c语言编写的开源高性能分布式文件系统
    如何移除本地文件夹与Git的连接
    spring boot+mybatis plus出现Invalid bound statement (not found)
  • 原文地址:https://www.cnblogs.com/kongxiangqun/p/16157536.html
Copyright © 2020-2023  润新知