ArrayList

作者: crazydane | 来源:发表于2017-06-02 23:13 被阅读0次

    java数组中最常用的一种,构造方法有三种.

    • ArrayList(int init) :init不赋值时构造一个空数组,默认容量大小为10. 否则容量大小为init.
    • ArrayList(Collection<? extends E> c):用Collection来构造数组
    ArrayList的方法(较为常规的就不提及了)
    • boolean add(int index, E element) :在指定位置添加一个元素,不指定就在末尾添加。
    • boolean addAll(int index, Collection<? extends E> c) 在指定位置添加一个collection
    • clear() 清空list
    • Object clone() 对原来的ArrayList进行浅层复制。
      具体参考Java里的浅拷贝和深层拷贝区别(shadow copy, deep copy))
    • forEach() 遍历arrayList里的每个元素,对for循环的简写,forEach有点像python里面的lamda
    正常的for循环
    ArrayList a = new ArrayList();
    a.add(1);
    a.add(2);
    for(Object item : a){
        System.out.println((int)item);
    }
    
    List<String> items = new ArrayList<>();
    items.add("A");
    items.add("B");
    items.add("C");
    
    //lambda
    //Output : A,B,C
    items.forEach(item->System.out.println(item));
    
    //Output : C
    items.forEach(item->{
        if("C".equals(item)){
            System.out.println(item);
        }
    });
    
    • Iterator<E> iterator()
    ArrayList<String> list = new ArrayList<String>();
    list.add("C");
    for(Iterator it2 = list.iterator();it2.hasNext();){
                  System.out.println(it2.next());
    }
    
    • List<E> subList(int fromIndex, int toIndex) :返回一个子List
      这个方法也用到了浅层copy,copy了子序列赋给一个新的序列。
    ArrayList<Integer> a = new ArrayList<Integer>();
    a.add(1);
    a.add(2);
    ArrayList<Integer> b =new ArrayList<Integer>(a.subList(0, 1));
    a.set(0, 10000);
    System.out.println(a.get(0));    //print 10000
    System.out.println(b.get(0));    //print 1  没跟着改变
    
    ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
    ArrayList tmp1 = new ArrayList();
    tmp1.add(1);
    tmp1.add(2);
    a.add(tmp1);
        
    ArrayList<ArrayList<Integer>> b =new ArrayList<ArrayList<Integer>>(a.subList(0, 1));
    tmp1.set(0, 10000);
    System.out.println(b);
    System.out.println(a.get(0).get(0));       //print 10000
    System.out.println(b.get(0).get(0));       //print 10000  跟着改变了
    

    相关文章

      网友评论

          本文标题:ArrayList

          本文链接:https://www.haomeiwen.com/subject/hbiufxtx.html