开发者社区 问答 正文

关于Map的引用传递

public class Student {
    private int id;
    private String name;
 
    public Student() {
    }
 
    public Student(int id, String name) {
        this.id = id;
        this.name = name;
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
Student one = new Student(1, "Tim");
Student two = new Student(2, "Jack");
 
Map<Integer, Student> map = new HashMap<Integer, Student>();
map.put(one.getId(), one);
map.put(two.getId(), two);
 
Student tmp = map.get(1);
tmp.setName("New"); // {1=[1, New], 2=[2, Jack]}

可以发现我将Map中的某项取出来并进行了修改,那么Map中的相应项也会被修改,所以说是引用传递的,但是有些情况我就是想把这个东西拿出来用并作些修改,但是Map的数据作为原始值是不想被变更的,这种情况下应该怎么办呢?

展开
收起
蛮大人123 2016-03-13 10:48:48 1767 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    实现Cloneable接口,覆盖clone方法,克隆一个新的对象出来做修改.

    2019-07-17 19:02:06
    赞同 展开评论
问答地址: