Java自学笔记(24):【集合】 ArrayList类

长度可变的数组

构造方法:

ArrayList() 构造一个默认初始容量为10的空列表

ArrayList(Collection <? extends E> c) 构造一个包含指定Collection的元素列表

ArrayList(int initalCapacity) 构造一个指定初始容量的空列表

 

在List接口基础上新增4个方法

1,Clone()

import java.util.ArrayList;
import java.util.List;

public class CloneMethodDemo {

    public static void main(String[] args) {
        //clone()
        ArrayList<StringBuffer> list =new ArrayList<StringBuffer>();
        StringBuffer sb = new StringBuffer("Learning-");
        list.add(sb);
        traverse(list); //Learning- 
        @SuppressWarnings({ "unchecked", "unused" })
        ArrayList<StringBuffer> list01 = (ArrayList<StringBuffer>)list.clone();
        traverse(list01); //Learning-
        
        //修改list中第一个元素的值
        sb=list.get(0);
        sb.append("clone method");
        traverse(list); //Learning-clone method 
        traverse(list01); //Learning-clone method
        
        list.add(new StringBuffer("Second"));
        traverse(list); //Learning-clone method Second 
        traverse(list01); //Learning-clone method
        
        //说明clone()方法为浅克隆
    }
    public static void traverse(List<StringBuffer> list) {
        //遍历
        for(int i=0;i<list.size();i++) {
            System.out.print(list.get(i)+" ");
        }
        System.out.println();
    }
}

2,ensureCapacity(int minCapacity) 用于增加ArrayList实例的容量

import java.util.ArrayList;

public class ensureCapacityMethodDemo {

    public static void main(String[] args) {
        // 添加1000000个元素
        ArrayList<String> list =new ArrayList<String>();
        long start = System.currentTimeMillis();
        for(int i=0;i<1000000;i++) {
            list.add(i+" ");
        }
        long end = System.currentTimeMillis();
        System.out.println(end-start);
        
        
        
        ArrayList<String> list01 =new ArrayList<String>();
        list01.ensureCapacity(1000000);
        long start01 = System.currentTimeMillis();
        for(int i=0;i<1000000;i++) {
            list01.add(i+" ");
        }
        long end01 = System.currentTimeMillis();
        System.out.println(end01-start01);
        
        //此方法可以提高效率
    }

}

3,removeRange()  删除from 到 to 的元素(左闭右开),并将后续元素左移

  相对简单,不演示

4,trimToSize() 最小化列表的内存开销

import java.util.ArrayList;
import java.util.List;

public class trimToSizeMethodDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<Integer> list =new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.trimToSize();   //将集合空间缩短到实际大小,并释放多余内存
        traverse(list);
        
    }
    public static void traverse(List<Integer> list) {
        //遍历
        for(int i=0;i<list.size();i++) {
            System.out.print(list.get(i)+" ");
        }
        System.out.println();
    }

}

 

posted @ 2019-08-07 10:39  提莫队长正在送命  阅读(158)  评论(0编辑  收藏  举报