1. 程式人生 > 實用技巧 >Java用Arrays.asList初始化ArrayList例項方法

Java用Arrays.asList初始化ArrayList例項方法

Java中使用Arrays.asList初始化ArrayList

package xiaoling;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
public class ListTest{
    public static void main(String[] args){
        List<List<Integer>> list = new ArrayList<>();
        for (int num=0; num<10; ++num){
            list.add(new ArrayList(Arrays.asList(num, num+1)));
        }
        System.out.println(list);
    }
}

執行結果為:[[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8], [8, 9], [9, 10]]

擴充套件學習:

java使用Arrays.asList快速建立List集合

程式中某段案例程式碼如下:

Map<String, List<CronTrigger>> tMap = new HashMap<String, List<CronTrigger>>();
tMap.put(name, Arrays.asList(new CronTrigger[] { trigger }));

程式執行丟擲異常:java.lang.UnsupportedOperationException

錯誤原因:

為了快速建立List而使用了Arrays.asList方法,但此方法返回的ArrayList不是java.util.ArrayList物件,而是Arrays的一個內部類。

我們可以看下原始碼

Arrays.class:
 @SafeVarargs
  public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
  }
---------------------------------------------------
private static class ArrayList<E> extends AbstractList<E>
    implements RandomAccess, java.io.Serializable
  {
    private static final long serialVersionUID = -2764017481108945198L;
    private final E[] a;
    ArrayList(E[] array) {
      if (array==null)
        throw new NullPointerException();
      a = array;
    }
.....

上述程式碼中可以看出內部類ArrayList繼承了AbstractList

感謝大家的學習和對碼農教程的支援。