Java 8提供了一种新的方法来调用元素狗上的复制构造函数或克隆方法:溪流, 兰巴斯和收藏家.

复制构造函数:List clonedDogs = dogs.stream().map(Dog::new).collect(toList());

表达Dog::new称为a方法参考..它创建一个函数对象,该对象调用Dog以另一只狗为论据。

克隆方法[1]:List clonedDogs = dogs.stream().map(d -> d.clone()).collect(toList());

得到一个ArrayList结果

或者,如果你必须得到一个ArrayListBack(万一您以后想修改它):ArrayList clonedDogs = dogs.stream().map(Dog::new).collect(toCollection(ArrayList::new));

更新列表

如果不需要保留dogs列表,您可以使用replaceAll方法并更新列表:dogs.replaceAll(Dog::new);

所有的例子都假设import static java.util.stream.Collectors.*;.

收集器ArrayLists

上一个示例中的收集器可以变成util方法。既然这是一件很平常的事,我个人喜欢它又短又漂亮。就像这样:ArrayList clonedDogs = dogs.stream().map(d -> d.clone()).collect(toArrayList());public static

Collector> toArrayList() {

return Collectors.toCollection(ArrayList::new);}

[1]关于CloneNotSupportedException:

若要使此解决方案运行在clone方法Dog 绝不能宣布它抛出CloneNotSupportedException..原因是map不允许抛出任何已检查的异常。

就像这样:// Note: Method is public and returns Dog, not Object

@Override

public Dog clone() /* Note: No throws clause here */ { ...

不过,这不应该是个大问题,因为这是最好的做法。(效果Java例如,给出这个建议。)

感谢古斯塔沃注意到这一点。

PS:

如果您发现它更漂亮,您可以使用方法引用语法来做完全相同的事情:List clonedDogs = dogs.stream().map(Dog::clone).collect(toList());

java arraylist 复制_如何克隆ArrayList和复制其内容?相关推荐

  1. mysql innodb 数据复制_快速将InnoDB表复制到另一个实例

    此过程演示如何将常规InnoDB表从正在运行的MySQL服务器实例复制 到另一个正在运行的实例.可以使用具有微小调整的相同过程在同一实例上执行完整表还原. 在源实例上,创建一个表(如果不存在): my ...

  2. mysql ab复制_实现mysql的ab复制(a-b-b,a-b-c)

    实验环境准备: 三台虚拟机,IP分别为master: 192.168.2.1   slave:192.168.2.2   slave1:192.168.2.3 将192.168.2.1的主机做为mys ...

  3. c花体复制_花式字体大全可复制 花式字体转换器

    求可复制花体字? 1.windows系统的字体文件都放在这个文件夹下:C:\WINDOWS\Fonts,首先打开此文件夹. 2.虽然在此文件夹下右键单击字体文件的菜单中无复制粘贴功能,但是却能使用&q ...

  4. 像中文的罗马音字体复制_罗马音大全可复制汉字免费版下载-罗马音大全可复制吊汉字app在线生成版v1.1.2 手机版-007游戏网...

    罗马音大全可复制吊汉字app在线生成版,是一款拥有各种好看文字的在线生成软件,软件功能强大,用户在线操作后即可生成各种好看的文字,用户可直接复制当作游戏名使用,能够有效的展现出自己独有的风格. 罗马音 ...

  5. 像中文的罗马音字体复制_罗马音大全可复制app中文下载

    罗马音大全可复制app是一款很好用的更改游戏ID的一款软件,这里有着独具特色的游戏名字,有着别人羡慕的游戏名字,有着大家喜欢的游戏名字,在这里是可以到你更改游戏的名字的,一款很好用的游戏辅助的软件,而 ...

  6. 罗马音平假字复制_罗马音平假名可复制吊字

    罗马音平假名可复制吊字是一款游戏昵称生成器软件,用户可以使用这款软件来作出一些十分稀有的游戏id,有了全新的id之后你在游戏就能够瞬间变得更加的有个性,能够和别人与众不同,能够让对手和队友都羡慕不已, ...

  7. 手机qq表白代码大全可复制_网页内文字无法复制怎么办?一分钟看懂这些方法,让你随意复制...

    现在的生活中,无论你是一名上班族还是学生或者什么职业,遇到不会的问题,总是需要上网查资料,找到某些好用的资料,却因为某些原因需要付费才能复制文字,那么面对网页内文字无法复制怎么办? 小酱就来教你如何免 ...

  8. python递归实现文件复制_在python中递归复制文件或目录

    python似乎有复制文件的功能(如shutil.copy)和复制目录的功能(如shutil.copytree),但我没有找到同时处理这两者的功能.当然,检查您是想复制一个文件还是一个目录是很简单的, ...

  9. 罗马音平假字复制_罗马音大全可复制app下载-罗马音大全片假名平假名可复制汉字软件 _5577安卓网...

    罗马音大全可复制app下载,这是一款能生成各种趣味单字id的生成器辅助,韩文.繁体字.罗马音片假名等文字都支持,软件安全无毒,使用方式简单,玩家一键就能生成与众不同的名字,欢迎下载体验! [软件详情] ...

最新文章

  1. java-分支重载以及构造方法
  2. ibtmp1文件过大
  3. 更好的内存管理-jemalloc (redis 默认使用的)
  4. 得到文件的服务器路径,如何获取服务器上的路径?
  5. git 修改历史提交信息
  6. AI基础:Python开发环境设置和小技巧
  7. kiss原则包括什么_和女孩牵手与kiss的具体方法
  8. 2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - D. 数的分解
  9. sun8134的Blog
  10. 论文笔记_S2D.73_ICCV2021_单目深度估计的可解释深度网络研究
  11. 批量自动付款(京东)
  12. CISSP工资百万, 认证培训2899美元,是不是太高?
  13. 隐马尔可夫模型拼音汉字输入法
  14. ueditor编辑器二次开发与优化
  15. 计算机等级考试:IE地址栏不见了 怎么让消失了的IE地址栏神奇的再次出现。?
  16. 高洛峰mysql_【干货】MySQL 安装与安全优化
  17. 微信公众号只能设置两个网页授权域名的解决方案
  18. 面向对象程序有哪些优点呢?
  19. wordpress实时在线聊天室
  20. C#、打开basler相机

热门文章

  1. 自适应网站适合什么行业
  2. 用于设定表格样式的附加css,Dreamweaver使用CSS样式表设置网页文本格式
  3. C# 使用Vlc播放视频或者监控
  4. 无法加载静态的图片Failed to load resource: the server responded with a status of 404 (Not Found)
  5. 聊天机器人—简介(一)
  6. STM32+ESP-01对接阿里飞燕平台
  7. java not equal_Java CriteriaBuilder.notEqual方法代码示例
  8. IOS开发(17)IOS 使用LBXScan框架开发扫一扫功能
  9. Unity shader 关于卡通渲染阴影闭塞的实现
  10. IEEE letter,magazine,journal/transaction