zoukankan      html  css  js  c++  java
  • 章节七、1-ArrayList

    一、集合是一个容器,前面讲的数值也是一个容器,

    它们的区别是:

    1、数组既可以存储基本数据类型,又可以存储引用数据类型,而集合只能存储引用数据类型,也就是对象。

    2、基本数据类型存储的是值,引用数据类型存储的是地址值。

    3、数组的长度是固定不变的,集合的长度可以根据元素的增加而增加。

    二、向List集合中添加元素

    package introduction9;
    
    import java.util.ArrayList;
    
    /***
     * 单列集合有Collection
     * Collection集合常用子接口有List 和 Set
     * Collection是层次结构中的根接口
     * List和Set是子接口,List以及他的实现类特点是可存重复的元素,Set以及他的实现类特点是不可有重复元素
     * List接口的实现类最常用的有Arraylist,特点是可重复元素
     * Set接口实现类最常用的有HashSet TreeSet 特点是不可有重复元素
     * 
     * 双列集合有MAP,双列指的是键值对的形式存储
     * MAP也是接口,java里面实现好的类有HashMap
     */
    public class ArrayListDemo {
    
        public static void main(String[] args) {
        /**    ArrayList<String>表示在这个集合中存储的元素类型为String类型,
            因为java是强类型的,所以使用前要声明使用类型,
            新建的集合元素默认大小为10,
            如果在ArrayList<String>()不输入内容,代表的是调用空参数,默认值为10
            如果在括号中带上参数,ArrayList<String>(100)输入100表示集合的初始值大小为100,
            指定大小的好处是可以节省资源,
            List对象实际上是存储在一个引用型数组中,表面上看该数组能够自动增长改变大小,
            实际上这个数组并没有办法改变大小,它只是改变了引用型数组的指向而已,
            java自动增加ArrayList数组的意思是指向ArrayList里添加对象时,原对象的数目加一,
            如果大于原底层数组的长度,就以适当的元素新建一个原数值的拷贝,并修改原数值(指向新建的数组),
            原数组自动抛弃,java中有垃圾回收机制,会自动回收这些垃圾,当即使这样有时候还是会比较耗资源,
            在用户向ArrayList里面追加对象时,java总是要计算容量是否适当,如果容量不足时就把原数组拷贝
            新数组内,对原数组变量重新赋值指向新数组
        */
            //创建一个ArrayList对象
            ArrayList<String> cars = new ArrayList<String>();
            //如何向集合中增加元素?
            //添加元素到名为cars的ArrayList中
            cars.add("BMW");
            cars.add("Honda");
            cars.add("Audi");
    }
    }

     

    三、获取元素个数  size方法

    package introduction9;
    
    import java.util.ArrayList;
    
    /***
     * 单列集合有Collection
     * Collection集合常用子接口有List 和 Set
     * Collection是层次结构中的根接口
     * List和Set是子接口,List以及他的实现类特点是可存重复的元素,Set以及他的实现类特点是不可有重复元素
     * List接口的实现类最常用的有Arraylist,特点是可重复元素
     * Set接口实现类最常用的有HashSet TreeSet 特点是不可有重复元素
     * 
     * 双列集合有MAP,双列指的是键值对的形式存储
     * MAP也是接口,java里面实现好的类有HashMap
     */
    public class ArrayListDemo {
    
        public static void main(String[] args) {
        /**    ArrayList<String>表示在这个集合中存储的元素类型为String类型,
            因为java是强类型的,所以使用前要声明使用类型,
            新建的集合元素默认大小为10,
            如果在ArrayList<String>()不输入内容,代表的是调用空参数,默认值为10
            如果在括号中带上参数,ArrayList<String>(100)输入100表示集合的初始值大小为100,
            指定大小的好处是可以节省资源,
            List对象实际上是存储在一个引用型数组中,表面上看该数组能够自动增长改变大小,
            实际上这个数组并没有办法改变大小,它只是改变了引用型数组的指向而已,
            java自动增加ArrayList数组的意思是指向ArrayList里添加对象时,原对象的数目加一,
            如果大于原底层数组的长度,就以适当的元素新建一个原数值的拷贝,并修改原数值(指向新建的数组),
            原数组自动抛弃,java中有垃圾回收机制,会自动回收这些垃圾,当即使这样有时候还是会比较耗资源,
            在用户向ArrayList里面追加对象时,java总是要计算容量是否适当,如果容量不足时就把原数组拷贝
            新数组内,对原数组变量重新赋值指向新数组
        */
            //创建一个ArrayList对象
            ArrayList<String> cars = new ArrayList<String>();
            //如何向集合中增加元素?
            //添加元素到名为cars的ArrayList中
            cars.add("BMW");
            cars.add("Honda");
            cars.add("Audi");
            //大小     size获取集合中的元素集合的歌数
            int size = cars.size();
            System.out.println("这个list集合的大小为:"+size);
        }
    
    }

    运行结果:

    四、通过索引访问集合中的元素(索引位从0开始)

    package introduction9;
    
    import java.util.ArrayList;
    
    /***
     * 单列集合有Collection
     * Collection集合常用子接口有List 和 Set
     * Collection是层次结构中的根接口
     * List和Set是子接口,List以及他的实现类特点是可存重复的元素,Set以及他的实现类特点是不可有重复元素
     * List接口的实现类最常用的有Arraylist,特点是可重复元素
     * Set接口实现类最常用的有HashSet TreeSet 特点是不可有重复元素
     * 
     * 双列集合有MAP,双列指的是键值对的形式存储
     * MAP也是接口,java里面实现好的类有HashMap
     */
    public class ArrayListDemo {
    
        public static void main(String[] args) {
        /**    ArrayList<String>表示在这个集合中存储的元素类型为String类型,
            因为java是强类型的,所以使用前要声明使用类型,
            新建的集合元素默认大小为10,
            如果在ArrayList<String>()不输入内容,代表的是调用空参数,默认值为10
            如果在括号中带上参数,ArrayList<String>(100)输入100表示集合的初始值大小为100,
            指定大小的好处是可以节省资源,
            List对象实际上是存储在一个引用型数组中,表面上看该数组能够自动增长改变大小,
            实际上这个数组并没有办法改变大小,它只是改变了引用型数组的指向而已,
            java自动增加ArrayList数组的意思是指向ArrayList里添加对象时,原对象的数目加一,
            如果大于原底层数组的长度,就以适当的元素新建一个原数值的拷贝,并修改原数值(指向新建的数组),
            原数组自动抛弃,java中有垃圾回收机制,会自动回收这些垃圾,当即使这样有时候还是会比较耗资源,
            在用户向ArrayList里面追加对象时,java总是要计算容量是否适当,如果容量不足时就把原数组拷贝
            新数组内,对原数组变量重新赋值指向新数组
        */
            //创建一个ArrayList对象
            ArrayList<String> cars = new ArrayList<String>();
            //如何向集合中增加元素?
            //添加元素到名为cars的ArrayList中
            cars.add("BMW");
            cars.add("Honda");
            cars.add("Audi");
            //大小     size获取集合中的元素集合的歌数
            int size = cars.size();
            System.out.println("这个list集合的大小为:"+size);
            //通过索引访问集合中的元素
            System.out.println("1索引位上的元素为:"+cars.get(1));
        }
    
    }

    运行结果为:

    五、遍历集合元素

    package introduction9;
    
    import java.util.ArrayList;
    
    /***
     * 单列集合有Collection
     * Collection集合常用子接口有List 和 Set
     * Collection是层次结构中的根接口
     * List和Set是子接口,List以及他的实现类特点是可存重复的元素,Set以及他的实现类特点是不可有重复元素
     * List接口的实现类最常用的有Arraylist,特点是可重复元素
     * Set接口实现类最常用的有HashSet TreeSet 特点是不可有重复元素
     * 
     * 双列集合有MAP,双列指的是键值对的形式存储
     * MAP也是接口,java里面实现好的类有HashMap
     */
    public class ArrayListDemo {
    
        public static void main(String[] args) {
        /**    ArrayList<String>表示在这个集合中存储的元素类型为String类型,
            因为java是强类型的,所以使用前要声明使用类型,
            新建的集合元素默认大小为10,
            如果在ArrayList<String>()不输入内容,代表的是调用空参数,默认值为10
            如果在括号中带上参数,ArrayList<String>(100)输入100表示集合的初始值大小为100,
            指定大小的好处是可以节省资源,
            List对象实际上是存储在一个引用型数组中,表面上看该数组能够自动增长改变大小,
            实际上这个数组并没有办法改变大小,它只是改变了引用型数组的指向而已,
            java自动增加ArrayList数组的意思是指向ArrayList里添加对象时,原对象的数目加一,
            如果大于原底层数组的长度,就以适当的元素新建一个原数值的拷贝,并修改原数值(指向新建的数组),
            原数组自动抛弃,java中有垃圾回收机制,会自动回收这些垃圾,当即使这样有时候还是会比较耗资源,
            在用户向ArrayList里面追加对象时,java总是要计算容量是否适当,如果容量不足时就把原数组拷贝
            新数组内,对原数组变量重新赋值指向新数组
        */
            //创建一个ArrayList对象
            ArrayList<String> cars = new ArrayList<String>();
            //如何向集合中增加元素?
            //添加元素到名为cars的ArrayList中
            cars.add("BMW");
            cars.add("Honda");
            cars.add("Audi");
            //大小     size获取集合中的元素集合的歌数
            int size = cars.size();
            System.out.println("这个list集合的大小为:"+size);
            //通过索引访问集合中的元素
            System.out.println("1索引位上的元素为:"+cars.get(1));
            //遍历集合元素
            //方式一:
            System.out.println("遍历集合");
            for(int i = 0;i<size;i++) {
                System.out.println("索引位"+i+"上的元素为:"+cars.get(i));
            }
            //方式二:使用高级for循环
            System.out.println("
    高级for循环");
            for(String car:cars) {
                System.out.println("集合元素为:"+car);
            }
        }
    
    }

    运行结果为:

    六、移除元素

    package introduction9;
    
    import java.util.ArrayList;
    
    /***
     * 单列集合有Collection
     * Collection集合常用子接口有List 和 Set
     * Collection是层次结构中的根接口
     * List和Set是子接口,List以及他的实现类特点是可存重复的元素,Set以及他的实现类特点是不可有重复元素
     * List接口的实现类最常用的有Arraylist,特点是可重复元素
     * Set接口实现类最常用的有HashSet TreeSet 特点是不可有重复元素
     * 
     * 双列集合有MAP,双列指的是键值对的形式存储
     * MAP也是接口,java里面实现好的类有HashMap
     */
    public class ArrayListDemo {
    
        public static void main(String[] args) {
        /**    ArrayList<String>表示在这个集合中存储的元素类型为String类型,
            因为java是强类型的,所以使用前要声明使用类型,
            新建的集合元素默认大小为10,
            如果在ArrayList<String>()不输入内容,代表的是调用空参数,默认值为10
            如果在括号中带上参数,ArrayList<String>(100)输入100表示集合的初始值大小为100,
            指定大小的好处是可以节省资源,
            List对象实际上是存储在一个引用型数组中,表面上看该数组能够自动增长改变大小,
            实际上这个数组并没有办法改变大小,它只是改变了引用型数组的指向而已,
            java自动增加ArrayList数组的意思是指向ArrayList里添加对象时,原对象的数目加一,
            如果大于原底层数组的长度,就以适当的元素新建一个原数值的拷贝,并修改原数值(指向新建的数组),
            原数组自动抛弃,java中有垃圾回收机制,会自动回收这些垃圾,当即使这样有时候还是会比较耗资源,
            在用户向ArrayList里面追加对象时,java总是要计算容量是否适当,如果容量不足时就把原数组拷贝
            新数组内,对原数组变量重新赋值指向新数组
        */
            //创建一个ArrayList对象
            ArrayList<String> cars = new ArrayList<String>();
            //如何向集合中增加元素?
            //添加元素到名为cars的ArrayList中
            cars.add("BMW");
            cars.add("Honda");
            cars.add("Audi");
            
            //大小     size获取集合中的元素集合的歌数
            int size = cars.size();
            System.out.println("这个list集合的大小为:"+size);
            
            //通过索引访问集合中的元素
            System.out.println("1索引位上的元素为:"+cars.get(1));
            
            //遍历集合元素
            //方式一:
            System.out.println("遍历集合");
            for(int i = 0;i<size;i++) {
                System.out.println("索引位"+i+"上的元素为:"+cars.get(i));
            }
            //方式二:使用高级for循环
            System.out.println("
    高级for循环");
            for(String car:cars) {
                System.out.println("集合元素为:"+car);
            }
            
            //移除集合元素(移除最后一个元素)
            cars.remove(size-1);
            System.out.println("
    高级for循环移除元素之后");
            for(String car:cars) {
                System.out.println("集合元素为:"+car);
            }
        }
    
    }

    运行结果为:

    七、此演示中移除元素比较快,因为集合中只有三位,当如果如果集合中元素较多,例如有2000个,移除倒数一、二、三位上的元素效率与集合只有三位的的效率一样,删除后元素后这个元素的索引位就会空下来,而ArrayList增删时会带来元素的移动,如果在中间删除一个元素,后面所有位置上的元素都会向前面移动,增加数据会向后移动,因此当如果想要移除前面一、二、三个元素的话,这样会影响效率,所以增删元素时用linked List集合会比较快(下一节中会讲到),这也是ArrayList和Linked List的不同之处。

    八、查询用ArrayList会比较快,因为ArrayList底层是数组实现的,使用下标查询,不需要比较,基于位置来读取相应的字节数。

  • 相关阅读:
    java位运算
    java笔试题(面试题)系列之一
    Java数据类型转换总结
    ++a和a++
    Java IO
    Java 并发
    Java位运算及补码存储
    Redis 5.0.0安装部署(伪集群版)
    Redis 安装(单机版)
    Dubbo源码分析系列之【服务暴露】
  • 原文地址:https://www.cnblogs.com/luohuasheng/p/9667038.html
Copyright © 2011-2022 走看看