• ArrayList的几种初始化方法


    1.使用Arrays.asList方法

    ArrayList<Object> obj = new ArrayList<Object>(Arrays.asList(Object o1, Object o2, Object o3));
    

    Demo:

    package javastudy;
     
    import java.util.ArrayList;
    import java.util.Arrays;
     
    public class MainTest2 {
     
    	public static void main(String[] args) {
    		ArrayList<String> list = new ArrayList<String>(Arrays.asList("o1", "o2"));
    	}
    }
    

     2.使用生成匿名内部内进行初始化:

    ArrayList<T> obj = new ArrayList<T>() {{
        add(Object o1);
        add(Object o2);
        ...
        ...
    }};

    Demo:

    package javastudy;
     
    import java.util.ArrayList;
     
    public class MainTest {
     
    	public static void main(String[] args) {
    		@SuppressWarnings("serial")
    		ArrayList<String> obj = new ArrayList<String>() {
    			{
    				add("1");
    				add("2");
     
    			}
    		};
    	}
    }
    

    3.常规方式(最为常用的):

    ArrayList<T> obj = new ArrayList<T>();
    obj.add("o1");
    obj.add("o2");
    ...
    ...
    

    Demo:

    import java.util.*;
    
    public class Details {
       public static void main(String args[]) {
    	   ArrayList<String> books = new ArrayList<String>();
    	   books.add("Java Book1");
    	   books.add("Java Book2");
    	   books.add("Java Book3");
    	  System.out.println("Books stored in array list are: "+books);
       }
    }

    或者这样也可以创建:

    ArrayList<T> obj = new ArrayList<T>();
    List list = Arrays.asList("o1","o2",...);
    obj.addAll(list);

    4.使用Collections.ncopies(通过复制)

    ArrayList<T> obj = new ArrayList<T>(Collections.nCopies(count,element));//把element复制count次填入A

    Demo:

    package javastudy;
     
    import java.util.ArrayList;
    import java.util.Collections;
     
    public class MainTest3 {
     
    	public static void main(String[] args) {
    		int count = 5;
    		String element = "hello";
    		ArrayList<String> obj = new ArrayList<String>(Collections.nCopies(count, element));
    	}
    	
    }

    下面这两种都属于常规里面的:

    第一种:List list = new ArrayList();
     
    第二种:List list = new ArrayList(16);

    第一种代码的初始化(这里面的初始化是内存大小)方法初始容量被设置为10。当ArrayList中的元素超过10个以后,会重新分配内存空间,使数组的大小增长到16(具体为什么是16,可以查看ArraList的源码),一旦容量发生变化,就要带来额外的内存开销,和时间上的开销。

    第二种方法直接使用了最大值,即指定默认容量大小的方式,这样效率更加高!


    参考:https://blog.csdn.net/qq_32575047/article/details/81220937

  • 相关阅读:
    2018/08/23 cstring中memset()函数的运用
    HDU 6446 Tree and Permutation(赛后补题)
    51NOD 1154 回文串的划分(DP)
    第七章小结_查找
    列出连通集的邻接表解题
    第六章学习小结_初识图
    图的邻接矩阵和邻接表及深度优先搜索
    第五章学习小结
    深深深深深深入虎穴
    括号匹配_进阶篇 ( 7-2 符号配对 )
  • 原文地址:https://www.cnblogs.com/JasonLGJnote/p/11876159.html
Copyright © 2020-2023  润新知