簡體   English   中英

Arrays.asList(T [] array)?

[英]Arrays.asList(T[] array)?

所以有Arrays.asList(T... a)但這適用於varargs。

如果我已經將數組放在T[] a怎么辦? 是否有一種方便的方法來創建List<T> ,或者我必須手動執行:

static public <T> List<T> arrayAsList(T[] a)
{
   List<T> result = new ArrayList<T>(a.length);
   for (T t : a)
     result.add(t);
   return result;
}

僅僅因為它適用於varargs並不意味着你不能正常調用它:

String[] x = { "a", "b", "c" };
List<String> list = Arrays.asList(x);

唯一棘手的問題是如果TObject ,你應該使用強制轉換告訴編譯器是否應該將參數包裝在數組中:

Object[] x = ...;
List<Object> list = Arrays.asList((Object[]) x);

要么

Object[] x = ...;
List<Object[]> list = Arrays.asList((Object) x);

您可能已經知道,有一個名為java.util.Collections的靜態類,它有許多用於處理機智數組的有用方法,例如搜索和排序。

至於你的問題,Collection接口指定了addremovetoArray等方法。 出於這樣或那樣的原因,API的作者決定addaddAll方法將是提供給用戶的唯一輸入函數。

Java Lists無法添加對象數組的一個原因是列表使用迭代器,並且迭代器的滾動(即轉到下一個值)比不必具有所有索引值的數組更嚴格i =(1, 2,5,9,22,......)

此外,陣列不是類型安全的 ; 也就是說,它們不能保證所有元素都符合特定的超類或接口,而泛型( List是其成員)可以保證類型安全。 因此,列表有機會使用add方法驗證每個項目。

我認為您可以放心,您在列表中添加數組的方法是在Java中實現此效果的最有效(如果不是最有效)方法之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM