目前我正在使用 LinkedHashMap 来维护插入顺序。
我使用的 LinkedHashMap 语法:
private LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<String, String>();
linkedHashMap.put("R1", "Data1");
linkedHashMap.put("R2", "Data2");
linkedHashMap.put("R3", "Data3");
linkedHashMap.put("R4", "Data4");
运行良好。但我必须使用重复键,而且我还维护插入数据。
例如:
private LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<String, String>();
linkedHashMap.put("R1", "Data1");
linkedHashMap.put("R2", "Data2");
linkedHashMap.put("R1", "Data3");
linkedHashMap.put("R2", "Data4");
当我尝试在 linkedHaphMap 中保留重复数据时,它会删除重复数据并仅保留一个数据。
那么如何在java中插入重复数据并保持插入顺序呢?我的案例如何实现?
最佳答案
试试这个:
public class Test {
public static void main(String[] args) {
Map<String, List<String>> map = new LinkedHashMap<>();
put(map, "R1", "Data1");
put(map, "R2", "Data2");
put(map, "R1", "Data3");
put(map, "R2", "Data4");
System.out.println(map); // prints {R1=[Data1, Data3], R2=[Data2, Data4]}
}
public static void put(Map<String, List<String>> map, String key, String value) {
if (map.get(key) == null) {
List<String> list = new ArrayList<>();
list.add(value);
map.put(key, list);
} else {
map.get(key).add(value);
}
}
}
关于java - 允许重复键并保持插入顺序的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35129071/