• 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();
        }
    
    }
  • 相关阅读:
    IE6常见CSS解释BUG及hack
    超链接标签a
    图片标签img
    如何让一个元素始终在窗口水平垂直居中
    display属性及属性值
    设置省略号
    如何让一个图片垂直居中
    post与get的区别
    绝对路径与相对路径
    数组的操作方法
  • 原文地址:https://www.cnblogs.com/tkj521Ya/p/11313813.html
Copyright © 2020-2023  润新知