zoukankan      html  css  js  c++  java
  • ArrayList

    ArrayList就是动态数组,是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。

     

    常用方法:

    (一)add()和get()方法

    boolean add(E e):将指定的元素添加到此列表的尾部。
    E get(int index):返回此列表中指定位置上的元素。
     
    例:
    由于列表中没有索引为3的元素,所以上述代码错误的,s4得到索引为3的元素这句代码应该去掉。
     
    (二)size()方法与clear()方法
    int size():返回此列表中的元素的个数。
    void clear():移除此列表中的所有元素。
     
    例:
    清除arrayList中元素后,输出它的元素个数,输出结果为:0
     
    也可以用isEmpty()方法来证明数列已经清空:
    boolean isEmpty():如果此列表中没有元素,则返回 true
     
    (三)remove方法
    E remove(int index):移除此列表中指定位置上的元素。
    移除第0个元素后,其余元素往前移一位。
     
    boolean remove(Object o):移除此列表中首次出现的指定元素(如果存在)。
     
    (四)indexOf()方法
    int indexOf(Object o):返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。
     
    输出结果为:0
     
    (五)toArray()方法
    Object[] toArray():按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
     
    toArray()方法返回一个Object类型的数组,不能用强制类型转换把Object数组转换为Integer类型的数组
    即: Integer[] in = (Integer) list.toArray   这样做事错的。需要从Object数组内把元素取出来再转换。
     
    为什么这样做是错的呢? 原因是Objcet数组内存放的可能是数字,也可能是字母,一把抓的转换时不合理的。
     
    --------------------------
    --------------------------
    A)集合当中存放的依然是对象的引用而不是对象本身。
     
    B)集合当中只能放置对象的引用,无法放置原生数据类型,我们需要使用原生数据类型的包装类才嗯那个加入到集合当中。
     
    C)集合当中放置的都是Object类型,因此取出来也是Object类型,那么必须要使用强制类型转换将其转换成真正的类型(也就是放置进去的类型)。
     
    ArrayList的底层实现:
    一)ArrayList底层采用数组实现,当使用不带参数的构造方法生成ArrayList对象时,实际上会在底层生产一个长度为10的Object类型的数组。
     
    二)如果增加的元素超过10个,那么ArrayList底层会新生成一个数组,长度为原数组的1.5倍+1,然后将原数组的内容复制到新的数组中,并且后续增加的内容都会放到这个新的数组中。当新数组无法r容纳增加的元素时,重复这个过程。
     
    三)对于ArrayList元素的删除操作,需要将被删除元素的后续元素向前移动,代价比较高。
     
     
  • 相关阅读:
    [BZOJ5020] [THUWC 2017]在美妙的数学王国中畅游
    [BZOJ3876] [AHOI2014&JSOI2014]支线剧情
    [BZOJ5120] [2017国家集训队测试]无限之环
    [BZOJ2959] 长跑
    [BZOJ2502] 清理雪道
    SSM-MyBatis-08:Mybatis中SqlSession的commit方法为什么会造成事物的提交
    SSM-MyBatis-07:Mybatis中SqlSession的insert和delete底层到底做了什么
    SSM-MyBatis-06:Mybatis中openSession到底做了什么
    SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper
    SSM-MyBatis-04:Mybatis中使用properties整合jdbc.properties
  • 原文地址:https://www.cnblogs.com/vmax-tam/p/4070459.html
Copyright © 2011-2022 走看看