gpt4 book ai didi

java - 如何制作包含列表的java hashmap?

转载 作者:行者123 更新时间:2023-12-05 01:02:56 29 4
gpt4 key购买 nike

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

import mainak.faisal;
import mainak.pulkit;

public class StartingPoint {

public static void main( String trav[] ) {
final Map<String, List<String>> paramMap = new HashMap<>();
List<String> list1 = new ArrayList<String>();
list1.add("1");
paramMap.put("segment", list1);
list1.clear();
list1.add("2");
paramMap.put("subDepartment", list1);
list1.clear();
list1.add("3");
paramMap.put("officerTitle", list1);

for( Map.Entry<String, List<String>> entry : paramMap.entrySet() ) {
String key = entry.getKey();
System.out.println("ACTIONKEY"+"------"+key);

for (String value : entry.getValue()) {
System.out.println("ACTIONVALUE-----"+value);
}
}
}
}

预期输出:

ACTIONKEY------segment
ACTIONVALUE-----1
ACTIONKEY------subDepartment
ACTIONVALUE-----2
ACTIONKEY------officerTitle
ACTIONVALUE-----3

但它的表现:

ACTIONKEY------segment
ACTIONVALUE-----3
ACTIONKEY------subDepartment
ACTIONVALUE-----3
ACTIONKEY------officerTitle
ACTIONVALUE-----3

为什么会这样?如何在不制作不同列表的情况下达到预期的效果?

最佳答案

如果您希望 map 中有 3 个不同的列表,则需要创建 3 个列表。仅创建一个列表将导致 map 包含对同一列表的 3 个引用,其中包含您在上一步中存储在列表中的内容:

segment ---------
\
subDepartment---- [3]
/
officerTitle ----

你想要的是

segment --------- [1]

subDepartment---- [2]

officerTitle ---- [3]

所以你需要 3 个不同的列表。了解将列表放入 map 不会创建列表的副本。它只存储对作为参数传递的列表的引用(如果您愿意,可以是指针)。

关于java - 如何制作包含列表的java hashmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24156378/

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