Object父类有个clone()的拷贝方法,不过它是protected类型的,我们需要重写它并修改为public类型。除此之外,子类还需要实现Cloneable接口来告诉JVM这个类是可以拷贝的。 重写代码 让我们修改一下User类,Address类,实现Cloneable接口,使其支持深拷贝。 /** * 地址 */ public class Address implements Cloneable { private...
List<Person> destList=newArrayList<Person>(srcList.size());for(Person p : srcList){ destList.add(p); } 2、使用List实现类的构造方法 List<Person> destList=newArrayList<Person>(srcList); 3、使用list.addAll()方法 List<Person> destList=newArrayList<Person>(); destList.addAll(srcList); 4...
list.addAll(); 拷贝 第一层是否深拷贝:false 第二层是否深拷贝:false list.stream().collect(Collectors.toList()); (浅拷贝) 测试代码 /** * list.stream().collect(Collectors.toList()); */@Testpublicvoidtest2(){ System.out.println("list.stream().collect(Collectors.toList()); 拷贝"); Lis...
new ArrayList<>(list); 拷贝 第一层是否深拷贝:false 第二层是否深拷贝:false 1. 2. 3. list.addAll()方法(浅拷贝) 测试代码 /** * list.addAll(); */ @Test public void test6() { System.out.println("list.addAll(); 拷贝"); List<CouponVo> list = getList(); List<CouponVo> couponV...
方法1:使用addAll方法拷贝 这是最简单直接的方法之一。我们可以通过创建一个新的空List,然后使用List的addAll方法将原始List中的所有元素添加到新List中。这样做的好处是简单直接,代码少,但是其性能不是最优的。 示例代码如下: List<Integer> originalList = new ArrayList<>(); //假设originalList已经有一些元素...
几种浅拷贝 1、遍历循环复制 List<Person> destList=new ArrayList<Person>(srcList.size()); for(Person p : srcList){ destList.add(p); } 2、使用List实现类的构造方法 List<Person> destList=new ArrayList<Person>(srcList); 3、使用list.addAll()方法 ...
这种方法也和上面两种方法效果完全一样,也是浅拷贝。addAll主要用于把多个List合并成一个List。 addAll()底层调用的是System.arraycopy(),我们直接调用System.arraycopy()也可以,这个方法有5个参数,太麻烦了,本文不把它作为一种方法介绍。 七、Orika MapperFacade 深拷贝 ...
在Java中,深拷贝与浅拷贝是两种不同的对象复制策略。浅拷贝仅复制对象的引用,而深拷贝则递归地复制对象及其所有子对象,确保新对象与原对象在内存中是完全独立的。对于Java中的List,实现深拷贝尤为关键,因为默认情况下,List的复制操作(如使用addAll方法)是浅拷贝。 1. 理解Java深拷贝与浅拷贝的概念 浅拷贝:复制对象...
复制方法2:使用list.addAll()方法 List<Car> carCopyList2 = new ArrayList<>(); carCopyList2.addAll(carSrcList); 复制方法3:循环遍历手动添加 List<Car> carCopyList3 = new ArrayList<>(); for (int i = 0; i < carSrcList.size(); i++) { ...
1 List<Integer> l2 = new ArrayList<>(); 2 l2.addAll(l1); 这些都是浅拷贝,其中clone()方式有些特殊,最开始我以为通过clone()是实现深拷贝,因为我看很多题解都是用这种方式进行拷贝。但其实 clone()也是浅拷贝,原因如下: 之所以题解经常用clone()或者构造方法直接进行复制,是因为做题通常是Interger或者St...