gpt4 book ai didi

java - 如何防止用作映射值的列表被修改?

转载 作者:行者123 更新时间:2023-12-02 08:42:23 25 4
gpt4 key购买 nike

Map<String, list> map = new HashMap();
List list = new ArrayList();

list.add("1");
list.add("2");
list.add("3");

map.put("first", list);
list.clear();

System.out.println(map.get("first")); // = null

我想通过在 map 的值部分使用列表来将其用于各种 map 。

它无法使用,因为它不断被修改。救命!

最佳答案

添加new ArrayList<>从列表中创建,而不是添加对 map 的引用。添加引用时,通过引用对对象进行的任何更改都将反射(reflect)到该对象被引用的所有位置(通过此引用)。

按如下方式进行:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {
public static void main(String[] args) {
Map<String, List<String>> map = new HashMap<String, List<String>>();
List<String> list = new ArrayList<String>();

list.add("1");
list.add("2");
list.add("3");

map.put("first", new ArrayList<String>(list));
list.clear();

System.out.println(map.get("first"));
}
}

输出:

[1, 2, 3]

顺便说一句,不要使用 raw type例如你应该使用 List<String> list = new ArrayList<String>();而不是List list = new ArrayList(); .

关于java - 如何防止用作映射值的列表被修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61301632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com