今天,简单讲讲



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()的使用相关推荐

  1. Collections.addAll() 的使用 以及和list.addAll() 的区别

    Collections 是java.util 下的一个类 ,可以直接使用 下面下一个往list 里面添加数据的方法 普通的写法 ArrayList<String> list = new A ...

  2. 持有对象---Arrays.asList()和Collections.addAll()的性能比较

    import java.util.ArrayList;  import java.util.Arrays;  import java.util.Collections;  import java.ut ...

  3. java 使用 java.util.Collections.addAll( list, array ) 将数组转成 list

    // java 使用 java.util.Collections 将数组转成 list List<String> list1 = new ArrayList<String>() ...

  4. 【Collections.addAll()方法】

    Colleations.addAll()方法: Colleations.addAll(集合名称 , 添加的多个元素) /*** addAll()方法添加多个元素* 给定一个字符串数组words,数组长 ...

  5. java矩阵addall_为什么Collections.addAll()比arrays.addAll()性能好?

    1. Collections.addAll()比arrays.addAll()更快吗? 在<Java核心编程>这本书中,"持有对象"这一章有个地方讲到: Collect ...

  6. java addall的用法_Java Collections addAll()用法及代码示例

    java.util.Collections类的addAll()方法用于将所有指定的元素添加到指定的集合中.要添加的元素可以单独指定或作为数组指定.此便捷方法的行为与c.addAll(Arrays.as ...

  7. java addall equals_java.util.Collections.addAll()

    描述 所述的addAll(Collection super T> c, T.. a)方法被用于所有指定元素添加到指定的集合. 声明 以下是java.util.Collections.addAll ...

  8. java addall equals_java.util.Collections.addAll()方法实例

    全屏 addAll(Collection super T>, T..)方法用于所有指定元素添加到指定的集合. 声明 以下是java.util.Collections.addAll()方法的声明. ...

  9. 炸窝(Collections当中的addAll方法)

    public class aaa { public static void main(String[] args) {/** java.util.Collections是集合工具类,用来对集合进行操作 ...

最新文章

  1. matplotlib绘制三维轨迹图
  2. 《OpenStack 实战》内容概览与作者采访
  3. oracle质数怎么算,借花献佛之使用Oracle sql求质数(笔记)
  4. 网页设计制作必须知道的10个秘诀
  5. SharePoint Server 2007 简单安装指南
  6. ffmpeg 新老接口问题及对照集锦
  7. java是值调用_Java 只有值调用
  8. shell中修改=后的值
  9. 数组 this.setData快捷赋值
  10. 精彩预告:还在迷茫吗,DBA的未来,他们怎么看?
  11. 插头DP题目泛做(为了对应WYD的课件)
  12. python猜硬币正反面_python 编写猜硬币小游戏
  13. excel时间双击后公式才计算机,(excel为什么需要双击每个单元格以后才能运算公式?)excel表格双击后数据...
  14. 如何卸载360安全卫士
  15. PostgreSQL学习篇9.3 浮点数类型
  16. Vera平台,为NFT赋予DeFi衍生价值
  17. 做一个前端网页送给女朋友~轮播图+纪念日
  18. 清华大学胡事民是计算机视觉,清华团队将Transformer用到3D点云分割上后,效果好极了丨开源...
  19. Oracle修改用户名密码
  20. C++函数 【鸡】 坤坤带你拿下

热门文章

  1. Python 语法细节(Python 2.x 与 Python 3.x 语法差异)
  2. Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)
  3. daterangepicker 日期范围插件自定义 可选 年份
  4. 设计模式读书笔记-----代理模式
  5. 解密QQ非会员漫游聊天记录
  6. JavaScript调用服务器事件
  7. datagrid中使用dropdownlist编辑模版时遇到问题
  8. base64图片保存获取本地路径
  9. 第46条:不要使用 dispatch_get_current_queue
  10. bzoj 2342: 双倍回文 回文自动机