栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

java map深拷贝

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java map深拷贝

Map的深拷贝、浅拷贝,开发时需要注意。

package test;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class TestMap {

public static void main(String[] args) {

HashMap map = new HashMap();

List list = new ArrayList();

list.add(100);

list.add(200);

map.put("basicType", 100);

map.put("list", list);

// 数据展示

System.out.println("------数据展示--------");

System.out.println("map:n" + map);

// 此处想达到copyMap1数据为map中的数据不变

System.out.println("浅复制。。。。。");

Map copyMap1 = map;// 浅复制,只是引用给了copyMap,map中数据改变,copyMap数据也会改变

map.put("basicType", 200);

System.out.println("map:n" + map);

System.out.println("copyMap1:n" + copyMap1);

// 此处想达到copyMap2数据为map中的数据不变

System.out.println("假深复制-----改变引用类型和基本类型");

Map copyMap2 = new HashMap();

copyMap2.putAll(map);// 假深复制,只对基本类型可用,当list中内容发生改变时,copyMap2中数据依然会变

map.put("basicType", 300);

list.add(300);

System.out.println("map:n" + map);

System.out.println("copyMap2:n" + copyMap2);

// 此处想达到copyMap3数据为map中的数据不变

System.out.println("深复制---使用序列化进行深拷贝");

HashMap copyMap3 = new HashMap();

copyMap3 = clone(map);

map.put("basicType", 400);

list.add(400);

System.out.println("map:n" + map);

System.out.println("copyMap3:n" + copyMap3);

}

public static T clone(T obj) {

T clonedObj = null;

try {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

ObjectOutputStream oos = new ObjectOutputStream(baos);

oos.writeObject(obj);

oos.close();

ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());

ObjectInputStream ois = new ObjectInputStream(bais);

clonedObj = (T) ois.readObject();

ois.close();

} catch (Exception e) {

e.printStackTrace();

}

return clonedObj;

}

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984739.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号