• ArrayList和Array的区别,以及ArrayList的用法


    首先来看看ArrayList和Array的区别

    Array在java里为数组,而ArrayList则是列表。

    Array的大小是固定的,而ArrayList则是可变的是动态变化的,ArrayList提供了更多的方法。


    最后我们来讨论ArrayList与数组的差别,以及ArrayList的效率问题
      
    1ArrayListArray的复杂版本
    ArrayList
    内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如IndexIndexOfContainsSort等都是在内部数组的基础上直接调用Array的对应方法。

      2)内部的Object类型的影响

           对于一般的引用类型来说,这部分的影响不是很大,但是对于值类型来说,往ArrayList里面添加和修改元素,都会引起装箱和拆箱的操作,频繁的操作可能会影响一部分效率。

    但是恰恰对于大多数人,多数的应用都是使用值类型的数组。
    消除这个影响是没有办法的,除非你不用它,否则就要承担一部分的效率损失,不过这部分的损失不会很大。
      
    3)数组扩容
    这是对ArrayList效率影响比较大的一个因素。
    每当执行AddAddRangeInsertInsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,在这个临界点的扩容操作,应该来说是比较影响效率的。
         
    1:比如,一个可能有200个元素的数据动态添加到一个以默认16个元素大小创建的ArrayList中,将会经过:
    16*2*2*2*2 = 256

    四次的扩容才会满足最终的要求。

    如何去使用ArrayList

    1.

    //创建列表,并添加a b
    		ArrayList arraylist=new ArrayList();
    		arraylist.add("a");
    		arraylist.add("b");
    		
    		System.out.println(arraylist);

    2.

    //在1的基础上插入一个c 位于a 与b 之间
    		arraylist.add(1,"c");
    		System.out.println(arraylist);
    
    3.
    //创建一个新的arrarylist 并在上面的基础上添加到新的arrarylist
    		ArrayList list=new ArrayList();
    		list.add("d");
    		list.add(arraylist.clone());		
    		System.out.println("新"+list);
    

    4.

    //删除第一个字符
    		arraylist.remove(0);
    		//或者	arraylist.remove("a");
    		System.out.println(arraylist);

    5.

    //按照集合删除多条数据
    		arraylist.removeAll(list);
    		
    		

    6.

    //修改指定位置的元素 修改第一个元素为q
    		arraylist.set(0, "q");
    		

    7.

    //获取列表第一个的元素
    		arraylist.get(0);





    参考文章 http://www.cnblogs.com/rickie/articles/67978.html



  • 相关阅读:
    ES基本原理
    docker技术基础
    docker简介
    IaaS,PaaS和SaaS
    python的type和object
    django:一个RESTfull的接口从wsgi到函数的历程
    python的list内存分配算法
    10个我最喜欢问程序员的面试问题
    月薪三万的面试题
    深圳有趣网络笔试题面试题
  • 原文地址:https://www.cnblogs.com/a986771570/p/8592659.html
Copyright © 2020-2023  润新知