`

集合的复制

    博客分类:
  • java
 
阅读更多


//示例
//学生类

package com.softstome.clone.arrayCopy;

import java.io.Serializable;

public class Student  implements Serializable ,Cloneable{
private static final long serialVersionUID = -4233424245102819008L;
private String stuNo;
private String stuName;

public Student() {

}

public Student(String  stuNo , String stuName) {
super();
this.stuName = stuName;
this.stuNo = stuNo;
}

public String getStuName() {
return stuName;
}

public void setStuName(String stuName) {
this.stuName = stuName;
}

public String getStuNo() {
return stuNo;
}

public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}

@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
return super.clone();
}


}



//集合复制演示类
package com.softstome.clone.arrayCopy;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/*
*
* List 中存对象 ,存的是地址
*
* 如果要深层复制,可以循环List,然后clone一个新对象 ,放到新的集合中,这样可以形成深层复制(克隆)的效果。
*
* 还有一种方式,通过序列化的方式实现集合的深层复制(推荐)
*
*
* */

public class ListCopy {

/*
* 8大 基本类型 和String类型的数组复制
* */
public void  testListCopyOfBasic(){
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add(12);


List listCopy= new ArrayList(list);
listCopy.add("ww");

listCopy.set(0, "ss");

System.out.println(list+"  "+listCopy);
}

/*
* 集合复制 对象  只是复制了地址
*
*通过  这种形式复制 List<Student> listCopy= new ArrayList<Student>(list);
*
*
* */
public void  testListCopyOfStu(){
List<Student> list = new ArrayList<Student>();
Student stu1=new Student("01", "张三");
list.add(stu1);
list.add(new Student("02", "李四"));
list.add(new Student("03", "王五"));



List<Student> listCopy= new ArrayList<Student>(list);
listCopy.add(new Student("04", "贺六 "));

listCopy.set(1, new Student("05", "琪琪"));

stu1.setStuName("张三1");

System.out.println(list);
System.out.println(listCopy);

System.out.println(list.get(0).getStuName()+"  "+listCopy.get(0).getStuName());
}
/*
* 集合复制 对象  只是复制了地址
*
*通过  这种形式复制 
   for (Student stu : list) {
listCopy.add(stu);
}
* */

public void  testListCopyOfStu1(){
List<Student> list = new ArrayList<Student>();
Student stu1=new Student("01", "张三");
list.add(stu1);
list.add(new Student("02", "李四"));
list.add(new Student("03", "王五"));



List<Student> listCopy= new ArrayList<Student>();
for (Student stu : list) {
listCopy.add(stu);
}

listCopy.add(new Student("04", "贺六 "));

listCopy.set(1, new Student("05", "琪琪"));

stu1.setStuName("张三1");

System.out.println(list);
System.out.println(listCopy);

System.out.println(list.get(0).getStuName()+"  "+listCopy.get(0).getStuName());
}


public void  testListCopyDeep(){
List<Student> list = new ArrayList<Student>();
Student stu1=new Student("01", "张三");
list.add(stu1);
list.add(new Student("02", "李四"));
list.add(new Student("03", "王五"));



List<Student> listCopy= new ArrayList<Student>();
for (Student stu : list) {
Student cloneStu=null;
try {
cloneStu = (Student) stu.clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
listCopy.add(cloneStu);
}

listCopy.add(new Student("04", "贺六 "));

listCopy.set(1, new Student("05", "琪琪"));

stu1.setStuName("张三1");

System.out.println(list);
System.out.println(listCopy);

System.out.println(list.get(0).getStuName()+"  "+listCopy.get(0).getStuName());
}



public static void main(String[] args) {
ListCopy listcopy=new ListCopy();
//listcopy.testListCopyOfBasic();

//listcopy.testListCopyOfStu();

//listcopy.testListCopyOfStu1();

listcopy.testListCopyDeep();





}
}

分享到:
评论

相关推荐

    java不同对象及集合的多次复制

    在Java编程中,对象复制是一项常见的任务,特别是在处理模型(Model)和视图对象(VO)时。模型对象通常用于封装业务数据,而视图对象则用于展示这些...在处理集合复制时,务必注意是否需要深拷贝以确保数据的独立性。

    java不同对象之间及集合的复制

    4. **集合复制**: 当需要复制一个集合到另一个集合时,Java提供了`Collection#copy`方法和`Arrays#copyOf`方法进行基本的复制,但这仅限于元素是不可变对象的情况。对于可变对象,需要进行深复制,可以使用`Stream` ...

    实体集合转另一个实体集合的工具类

    网上有好多实体转另一个实体的方法,但是几乎没有实体集合直接转另一个实体集合的工具类,自己写了一个,供大家使用。其实原理很简单,就是泛型。

    hydra:一个多进程的MongoDB集合复制器

    hydra - 多进程 MongoDB 分片集合复制器 执照 有关许可条款,请参阅随附的 LICENSE.txt 文件。 目的 这是执行从一个 MongoDB 集合到另一个集合的实时复制的工作参考代码,对您的生产 MongoDB 集群的影响很小或没有...

    Java集合案例及源代码.rar

    - 使用`clone()`、`toArray()`、`Collections.copy()`进行集合复制。 - `List`到`Array`的转换,`Arrays.asList()`将数组转换为List,`ArrayList.toArray()`将List转换回数组。 8. **集合的操作**: - 添加元素...

    实现C++集合

    并集操作是将当前集合复制到一个新的集合,然后添加另一个集合的所有元素。补集操作是创建一个全集,然后从全集中移除当前集合的所有元素。 为了调试和验证这些操作,我们可能编写一个主程序,创建多个集合对象,...

    c++程序设计实现集合交集并集差集.doc

    拷贝构造函数用于将一个集合复制到另一个集合,析构函数用于释放动态内存。 构造函数 类 int_set 的构造函数 int_set(int x) 用于初始化一个集合,参数 x 表示集合的最大大小。构造函数会分配动态内存,并将集合的...

    C# 观察者模式 4个简单的控制台程序例子

    vs2013工程 收集了几个简单易懂的C#观察者模式示例,均是控制带程序,可以直接运行看结果,代码中有注释

    已复制的AI安全检测项目集合- AI安全测试数据库.zip

    已复制的AI安全检测项目集合_ AI安全测试数据库.zip已复制的AI安全检测项目集合_ AI安全测试数据库.zip已复制的AI安全检测项目集合_ AI安全测试数据库.zip已复制的AI安全检测项目集合_ AI安全测试数据库.zip已复制的...

    (完整版)c++机考题目加答案 (2).docx

    5. `Copy(Set *set)`:将当前集合复制到传入的`set`指针所指向的集合中。 6. `Equal(Set *set)`:比较两个集合是否相等,如果元素个数和内容都相同,则返回`True`,否则返回`False`。 7. `Print()`:打印集合的所有...

    MongoVUE简单操作手册

    可以将集合复制到不同的数据库中。点击“copy”按钮后,将显示复制的集合信息。 知识点总结: 1. MongoVUE 是一个功能强大且实用的 MongoDB 客户端工具。 2. 基础操作包括新增一个连接、查看所有数据、查看特定的...

    电商神器-复制链接地址-剪贴板工具集合.zip

    这款名为“电商神器-复制链接地址-剪贴板工具集合”的压缩包提供了一种高效的方法来管理与复制网页链接,极大地提升了工作流程的便捷性。这个工具集的核心功能是帮助用户快速、批量地收集和处理链接地址,减少了手动...

    顺序表表示集合,实现集合的交、并、差运算

    - 首先将集合A的所有元素复制到集合C中。 - 然后遍历集合B的元素,如果该元素不在集合C中,则添加到集合C中。 - 如果集合C已满,则进行扩容。 - **AnB(A, B, D)**:实现集合A与集合B的交集操作,并将结果保存在...

    测量移动复制集合以及集合的用法学习教案.pptx

    综上所述,这个学习教案涵盖了在CAD软件中进行精确测量、高效组织图素集合以及移动和复制图素的关键技术。这些知识点对于理解和使用这类专业软件至关重要,无论是进行产品设计、工程分析还是制造流程规划,都是必不...

    PL-SQL用户指南与参考(译)

    可以使用不同的方法为集合赋值,包括从其他集合复制数据。 ##### 七、比较集合 可以比较两个集合是否相等,或者检查一个集合是否包含另一个集合的所有元素。 ##### 八、在SQL语句中使用PL/SQL的集合类型 **1、...

    ch2数据安全容灾容错课件.ppt

    数据备份是这一切的基础,它是为了预防因操作失误、系统故障等原因导致的数据丢失,将整个系统数据或重要数据集合复制到其他存储介质的过程。数据复制技术是灾备系统的核心,它确保生产数据和灾备数据的一致性。 ...

    mongoDB数据库

    - **复制集合**:使用`db.user.copyTo("user1")`将`user`集合复制为`user1`集合。 ##### 3.3 数据操作 - **插入数据**:向集合中插入数据,例如: ```javascript db.user.insert({"username":"jack","age":18,...

    C#创建对象列表(List)的不同方法.rar_list_对象

    正确选择创建方式取决于你的具体需求,如是否需要预先分配空间、是否需要从现有集合复制数据等。此外,`List&lt;T&gt;`还提供了丰富的操作方法,如查找、排序、删除等,这些也是日常开发中经常使用的功能。

    测量移动复制集合以及集合的用法学习课程.pptx

    测量移动复制集合以及集合的用法学习课程.pptx

    BeanUtil Jar包

    它可以将单个值转换为集合,或将整个集合复制到另一个集合属性。 在实际项目中,BeanUtil不仅限于JavaBeans,它也可以应用于任何具有getter和setter方法的对象,使其在POJO(Plain Old Java Object)中同样适用。...

Global site tag (gtag.js) - Google Analytics