Java 深拷贝 DetailRouteMapData 列表:实现代码和解析
public class DetailRouteMapData implements java.io.Serializable {\n/*唯一编号(取系统时间戳)/\nlong id;\n/*训练场ID 或者 项目路线ID/\nlong dependId;\n/*线名称/\nString name;\n/**线宽度(如果是圆则为直径)/\nint width;\n/线颜色/\nint color;\n/\n * 线类型\n * 基础线:1000-实线 1001-虚线 1002-停止线 1003-圆形 1004-禁停区域 1005-斑马线区域\n * 1006-掉头 1007-掉头左转 1008-掉头直行 1009-掉头左转直行\n * 1010-左转 1011-左转直行 1012-直行 1013-右转直行 1014-右转\n * 1015-左转直行右转 1016-左转右转\n * 项目线:按照项目列表Project中编号来\n * /\nint type;\n\n//!!!!!项目区域采集需要三条线(点的集合)组成一个项目!!!!!\n/**第一条线上点的集合(项目区域情况下),线上点的集合(基础线、区域情况下)/\njava.util.List<Point3D> ptList1;\n/*第二条线上点的集合/\njava.util.List<Point3D> ptList2;\n/*第三条线上点的集合/\njava.util.List<Point3D> ptList3;\n}\n\npublic class Point3D implements java.io.Serializable {\nfloat x;\n\nfloat y;\n\nfloat z;\n}\n\njava.util.List<DetailRouteMapData> detailRouteMapDataList = getDetailRouteMapDataListByTrainingGroundIdOrProjectRouteMapDataId(key);\njava如何对detailRouteMapDataList 进行深拷贝内容:要对detailRouteMapDataList进行深拷贝,可以使用以下方法:\n\n1. 实现Serializable接口:\n 让DetailRouteMapData类和Point3D类实现Serializable接口,这样它们的对象就可以被序列化和反序列化。\n\n java\n public class DetailRouteMapData implements java.io.Serializable {\n //...\n }\n\n public class Point3D implements java.io.Serializable {\n //...\n }\n \n\n2. 使用ObjectOutputStream和ObjectInputStream进行序列化和反序列化:\n 创建一个新的ArrayList,并使用ObjectOutputStream将原始列表写入ByteArrayOutputStream,然后使用ObjectInputStream从ByteArrayInputStream读取并返回新的列表。\n\n java\n java.util.List<DetailRouteMapData> deepCopy(java.util.List<DetailRouteMapData> originalList) throws java.io.IOException, java.lang.ClassNotFoundException {\n java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream();\n java.io.ObjectOutputStream out = new java.io.ObjectOutputStream(bos);\n out.writeObject(originalList);\n out.flush();\n out.close();\n\n java.io.ByteArrayInputStream bis = new java.io.ByteArrayInputStream(bos.toByteArray());\n java.io.ObjectInputStream in = new java.io.ObjectInputStream(bis);\n java.util.List<DetailRouteMapData> copiedList = (java.util.List<DetailRouteMapData>) in.readObject();\n in.close();\n\n return copiedList;\n }\n \n\n3. 调用深拷贝方法:\n 调用deepCopy方法来进行深拷贝。\n\n java\n java.util.List<DetailRouteMapData> copiedList = deepCopy(detailRouteMapDataList);\n \n\n这样,copiedList就是detailRouteMapDataList的一个深拷贝。
原文地址: https://www.cveoy.top/t/topic/qtas 著作权归作者所有。请勿转载和采集!