ArrayList的复制方法有几种,我们这边分别列出来,并且判断了更改复制的List会不会对原List有影响

初始List

ArrayList<Integer> pre = new ArrayList<>();
pre.add(1);
pre.add(2);
pre.add(3);

1、new ArrayList<>(pre)

System.out.println("=================方法一new ArrayList<>(pre)===================");ArrayList<Integer> after = new ArrayList<>(pre);//输出afterSystem.out.println("=========输出after=========");System.out.println(after);System.out.println("====输出两个list的hashcode====");System.out.println("pre的hashcode:" + pre.hashCode());System.out.println("after的hashcode:" + after.hashCode());
//        向after中添加新元素after.add(4);System.out.println("=========输出新pre、after=========");System.out.println("pre" + pre);System.out.println("after" +after);System.out.println("====输出更改后两个list的hashcode====");System.out.println("pre的hashcode:" + pre.hashCode());System.out.println("after的hashcode:" + after.hashCode());
=================方法一new ArrayList<>(pre)===================
=========输出after=========
[1, 2, 3]
====输出两个list的hashcode====
pre的hashcode:30817
after的hashcode:30817
=========输出新pre、after=========
pre[1, 2, 3]
after[1, 2, 3, 4]
====输出更改后两个list的hashcode====
pre的hashcode:30817
after的hashcode:955331

2、after = pre

System.out.println("=================方法二 after= pre ===================");ArrayList<Integer> after = new ArrayList<>();after = pre;//输出afterSystem.out.println("=========输出after=========");System.out.println(after);System.out.println("====输出两个list的hashcode====");System.out.println("pre的hashcode:" + pre.hashCode());System.out.println("after的hashcode:" + after.hashCode());
//        向after中添加新元素after.add(4);System.out.println("=========输出新pre、after=========");System.out.println("pre" + pre);System.out.println("after" +after);System.out.println("====输出更改后两个list的hashcode====");System.out.println("pre的hashcode:" + pre.hashCode());System.out.println("after的hashcode:" + after.hashCode());
=================方法二 after= pre ===================
=========输出after=========
[1, 2, 3]
====输出两个list的hashcode====
pre的hashcode:30817
after的hashcode:30817
=========输出新pre、after=========
pre[1, 2, 3, 4]
after[1, 2, 3, 4]
====输出更改后两个list的hashcode====
pre的hashcode:955331
after的hashcode:955331

3、pre.clone();

System.out.println("=================方法三 pre.clone() ===================");ArrayList after = (ArrayList) pre.clone();
//        after = pre;//输出afterSystem.out.println("=========输出after=========");System.out.println(after);System.out.println("====输出两个list的hashcode====");System.out.println("pre的hashcode:" + pre.hashCode());System.out.println("after的hashcode:" + after.hashCode());
//        向after中添加新元素after.add(4);System.out.println("=========输出新pre、after=========");System.out.println("pre" + pre);System.out.println("after" +after);System.out.println("====输出更改后两个list的hashcode====");System.out.println("pre的hashcode:" + pre.hashCode());System.out.println("after的hashcode:" + after.hashCode());
=================方法三 pre.clone() ===================
=========输出after=========
[1, 2, 3]
====输出两个list的hashcode====
pre的hashcode:30817
after的hashcode:30817
=========输出新pre、after=========
pre[1, 2, 3]
after[1, 2, 3, 4]
====输出更改后两个list的hashcode====
pre的hashcode:30817
after的hashcode:955331Process finished with exit code 0

4、after.addAll(pre)

 System.out.println("=================方法四 after.addAll(pre) ===================");ArrayList<Integer> after = new ArrayList<>();after.addAll(pre);//after.allAll(pre) == ArrayList<Integer> after = new ArrayList<>(pre);//输出afterSystem.out.println("=========输出after=========");System.out.println(after);System.out.println("====输出两个list的hashcode====");System.out.println("pre的hashcode:" + pre.hashCode());System.out.println("after的hashcode:" + after.hashCode());
//        向after中添加新元素after.add(4);System.out.println("=========输出新pre、after=========");System.out.println("pre" + pre);System.out.println("after" +after);System.out.println("====输出更改后两个list的hashcode====");System.out.println("pre的hashcode:" + pre.hashCode());System.out.println("after的hashcode:" + after.hashCode());
=================方法四 after.addAll(pre) ===================
=========输出after=========
[1, 2, 3]
====输出两个list的hashcode====
pre的hashcode:30817
after的hashcode:30817
=========输出新pre、after=========
pre[1, 2, 3]
after[1, 2, 3, 4]
====输出更改后两个list的hashcode====
pre的hashcode:30817
after的hashcode:955331

5、 for(int i in pre)

System.out.println("=================方法五 for(int i in pre) ===================");ArrayList<Integer> after = new ArrayList<>();for (int i: pre) {after.add(i);}//输出afterSystem.out.println("=========输出after=========");System.out.println(after);System.out.println("====输出两个list的hashcode====");System.out.println("pre的hashcode:" + pre.hashCode());System.out.println("after的hashcode:" + after.hashCode());
//        向after中添加新元素after.add(4);System.out.println("=========输出新pre、after=========");System.out.println("pre" + pre);System.out.println("after" +after);System.out.println("====输出更改后两个list的hashcode====");System.out.println("pre的hashcode:" + pre.hashCode());System.out.println("after的hashcode:" + after.hashCode());
=================方法五 for(int i in pre) ===================
=========输出after=========
[1, 2, 3]
====输出两个list的hashcode====
pre的hashcode:30817
after的hashcode:30817
=========输出新pre、after=========
pre[1, 2, 3]
after[1, 2, 3, 4]
====输出更改后两个list的hashcode====
pre的hashcode:30817
after的hashcode:955331

JAVA:List复制相关推荐

  1. java 流 复制文件_【Java】使用字节流复制文件

    其实用java程序复制文件并不难 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOE ...

  2. copy所有的java文件到硬盘_将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad...

    listFiles方法接受一个FileFilter对象,这个FileFilter对象就是过虑的策略对象,不同的人提供不同的FileFilter实现,即提供了不同的过滤策略. //将d:\java目录下 ...

  3. 将d:\java目录下的所有.java文件复制到d:\jad 目录下,并将原来文件的扩展名从.java 改为.jad

    package com;import java.io.*; import java.util.ArrayList; import java.util.List; /* 编写一个程序,将d:\java目 ...

  4. 编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad

    package com.hbut.test; import java.io.File; import java.io.FileNotFoundException; import java.io.Fil ...

  5. java aio复制文件_java复制文件的4种方式及拷贝文件到另一个目录下的实例代码...

    尽管Java提供了一个可以处理文件的IO操作类. 但是没有一个复制文件的方法. 复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候. 然而有几种方法可以进行Java文件复制操作,下面列举出 ...

  6. java高效复制文件并移动_Java 7:复制和移动文件和目录

    java高效复制文件并移动 这篇文章是我对Java 7 java.nio.file软件包的系列文章的继续,这次涵盖了文件的复制和移动以及完整的目录树. 如果您曾经对Java缺少copy和move方法感 ...

  7. java的复制构造函数_什么是Java中的复制构造函数?

    通常,复制构造函数是通过使用先前已创建的相同类的对象初始化对象来创建对象的构造函数. Java支持复制构造函数,但与C语言不同,Java没有提供您需要自己定义的显式复制构造函数. 写一个拷贝构造函数 ...

  8. 把java复制到e_编写一个程序,将e:\java目录下的所有.java文件复制到e:\jad目录下...

    package cn.io.file.demo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.i ...

  9. Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg...

    package com.swift;import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; im ...

  10. java字节流复制_Java使用字节流复制文件的方法

    其实用java程序复制文件并不难,具体内容如下 import java.io.FileInputStream; import java.io.FileOutputStream; import java ...

最新文章

  1. EdgeBERT:极限压缩bert
  2. vb.net中的部分代码
  3. cms是什么意思啊_GC 知识点补充——CMS
  4. 管理 Active Directory 所必需的工具或技术
  5. (转载)关于My97 datepicker与Angular ng-model绑定问题解决。
  6. 比Redis快50倍的中间件,为啥这么快?
  7. 代码优化能减少多少运行速度_35 个小细节,提升 Java 代码的运行效率!你知道几个?...
  8. 安卓rom制作教程_【ROM】 MIUI10.3.2.0稳定版 通刷包 安卓9 全面屏手势|小爱同学|游戏模式...
  9. 模拟集成电路设计初学系列
  10. 宋宝华《Linux设备驱动开发详解》
  11. 日志表数据量大查询慢问题
  12. sqlServer相关
  13. js制作网页动态背景
  14. 简单使用Search()函数
  15. 多元线性回归案例(改)
  16. 32位颜色 转换成16位颜色
  17. VM虚拟机(VMware)设置外网连接
  18. 域名系统(DNS)说明
  19. Linux命令行下载OneDrive分享链接中的文件
  20. 零入门kubernetes网络实战-3->Underlay网络与Overlay网络总结

热门文章

  1. iphonex 序列号_iPhoneX序列号在哪 苹果X序列号怎么看?
  2. [组图]10个免费在线图片特效处理的网站
  3. 碧蓝航线最新服务器2018,2018最新碧蓝航线建造时间表 舰娘建造时间表一览
  4. 独孤思维:免费软件搬运项目,零成本玩公众号赚零花钱
  5. 【趣味科普】数学中的励志故事
  6. 深度学习中模型攻击与防御(Attack DL Models and Defense)的原理与应用(李宏毅视频课笔记)
  7. 常用颜色对应RGB颜色图
  8. Linux中常用的文件目录,Linux学习笔记2——Linux中常用文件目录操作命令
  9. 微信小程序点击查看大图
  10. 超全软件下载网站和网页(一网一匠)