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. SQLServer之删除约束
  2. [转](不理想)Ubuntu下更改主显示器
  3. 在使用import语句时
  4. 国外17个非常热门的在线备份服务
  5. python函数参数理解
  6. 7、CSS 属性选择器
  7. 今天项目中遇到的一个问题:判断新闻Id是否存在
  8. 学习笔记(23):Python网络编程并发编程-开启线程的两种方式
  9. html中label的寬度無法修改,如何设置HTML span、label 的宽度
  10. 爆料人士称2024年iPhone SE设计有大变 类似iPhone XR/11
  11. c语言disp是什么意思及用法,disp(disp是什么功能)
  12. 关于复利2.0 3.0
  13. 今日之“烧饼油条”!
  14. 绝了!深入分布式缓存从原理到实践技术分享,超详细
  15. 基于FPGA的出租车计费器的设计
  16. 私有化单机题库管理软件“题库管家”1.3版本正式发布,windows版与mac版下载地址
  17. 11位大咖集结!和最专业的人,探讨“由内及外”的未来趋势 | 生辉 · 生命科学大会-1
  18. 强烈推荐:网工利器PNETLab模拟器
  19. 航空售票管理系统php,航空售票管理系统设计
  20. epub格式电子书剖析之一:文档构成

热门文章

  1. 绘画新手怎么学习绘画?怎么让自己的绘画作品看起来舒服?
  2. WebGL着色器内置变量gl_PointSize、gl_Position、gl_FragColor、gl_FragCoord、gl_PointCoord
  3. 【Bluetooth蓝牙开发】三、蓝牙调试工具【集合汇总】
  4. 多波束测深系统工作原理及组成,多波束在无人船上的应用
  5. mac电脑确认已连接网略,却无法访问内网地址
  6. 汇编语言实验二 汇编语言程序设计(顺序、多分支、循环)
  7. C语言路漫漫,其修远兮
  8. 证监会叫停VR等行业跨界定增,福兮祸兮?
  9. 7000字长文深度解读:DTC商业模式,对品牌增长的颠覆式影响
  10. 疫情可视化part1