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(); } }