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一個再放進去比較好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章