日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android Collections.addAll()的使用

發布時間:2024/4/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android Collections.addAll()的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


今天,簡單講講 

android Collections.addAll()的使用。



我們在編碼時經常需要將一些元素添加到一個List中,此時我們一般有兩種選擇:Collections.addAll()或者是ArrayList.addAll()。在需添加元素比較少的情況下,并在List的size在萬級以上時,一般建議Collections.addAll(),但當List的size較小時,兩種方法沒有什么區別,甚至ArrayList.addAll()更好。


當我們將一個數組添加到一個List中時,Collections.addAll()和ArrayList.addAll()沒有什么性能差異。

但當我們將一個List添加到一個List中時,建議使用ArrayList.addAll()。

添加數組和列表,要比添加元素快。

HashMap和HashSet有類似用法。


下面簡單介紹Collections.addAll()的使用代碼

public class CollectionsTest {public static void main(String[] args) {List<String> l = new ArrayList<String>();CollectionsTest.add(l);String[] s = {"s1","s2"};Collections.addAll(l, s);Collections.addAll(l, "a1","a2");UtilTools.printCollection(l);}public static void add(Collection<String> c){for(char i='a';i<'g';i++){c.add(String.valueOf(i));}}}


這里需要注意一點,使用Collections.addAll還是Arrays.asList生成List,當修改原始數據時,均會影響到List里的數據?? 。


Collections.addAll方法的源碼如下所示:

@SafeVarargs public static <T> boolean addAll(Collection<? super T> c, T... elements) {boolean result = false;for (T element : elements)result |= c.add(element);return result; }


Arrays.asList方法相關源碼如下所示:

@SafeVarargs @SuppressWarnings("varargs") public static <T> List<T> asList(T... a) {return new ArrayList<>(a);// 內部私有類 }ArrayList(E[] array) {a = Objects.requireNonNull(array); }public static <T> T requireNonNull(T obj) {if (obj == null)throw new NullPointerException();return obj; }


從源碼來看,不管是Collections.addAll,還是Arrays.asList,均是引用傳遞,修改source object會影響到list里的target object。下面是我測試的代碼:

public static void main(String[] args) {User user_1 = new User();user_1.put("name", "user_1");user_1.put("value", "v_1");User user_2 = new User();user_2.put("name", "user_2");user_2.put("value", "v_2");List<User> asList = Arrays.asList(user_1, user_2);List<User> arraylist = new ArrayList<>();Collections.addAll(arraylist, user_1, user_2);user_1.put("value", "v_a_1");user_2.put("value", "v_a_2");System.out.println("-------- asList --------");System.out.println(JsonKit.toJson(asList));System.out.println("\n-------- arraylist --------");System.out.println(JsonKit.toJson(arraylist)); }


運行結果

-------- asList -------- [{"name":"user_1","value":"v_a_1"},{"name":"user_2","value":"v_a_2"}]-------- arraylist -------- [{"name":"user_1","value":"v_a_1"},{"name":"user_2","value":"v_a_2"}]


結論,不管是Collections.addAll還是Arrays.asList,修改原始數據時,均會影響到List里的數據


android Collections.addAll()的使用就講完了。


就這么簡單。

總結

以上是生活随笔為你收集整理的android Collections.addAll()的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。