Java Map放进去的元素值被改变

初学java,有一天碰到这么个问题,用一段很短的代码复现一下:

public class HelloWorld {
    public static void main(String[] args){
        Map<Set<String>,Set<String>> map = new HashMap<>();
        Set<String> a= new HashSet<>();
        a.add("1");
        Set<String> b= new HashSet<>();
        b.add("2");
        map.put(a,b);
        a.add("2");
        b.add("3");
        System.out.println(map);
    }
}

输出:
{[1, 2]=[2, 3]}

原因即传入的set是引用,并不会像c++新复制一份,即占用新空间,然后传进去。所以后面的修改也会影响map已经插入的元素。不过如果将set换为Integer好像就又没有这种问题了,所以以后往map或者set里面放元素的时候还是临时new一个再放进去比较好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值