Java 编辑地图条目的值而不替换整个地图条目
我目前正在搜索一些类似于地图的数据结构,但其差异在于,地图条目的值是可编辑的 我的地图如下所示:Java 编辑地图条目的值而不替换整个地图条目,java,dictionary,data-structures,collections,Java,Dictionary,Data Structures,Collections,我目前正在搜索一些类似于地图的数据结构,但其差异在于,地图条目的值是可编辑的 我的地图如下所示:map。但有时在代码中,我想将一个项目添加到映射条目的列表中。但这不起作用,因为我认为如果不使用replace或put替换整个条目,我就无法编辑地图条目的值 是否有一些类似的数据结构看起来像Map,但我可以编辑条目的值 代码: for(字符串p:路径){ 字符串[]arr=p.split(“\\\\”,2); //这是一个文件中的元素。是否有其他文件??? List List=geteilt.get(
map
。但有时在代码中,我想将一个项目添加到映射条目的列表中。但这不起作用,因为我认为如果不使用replace
或put
替换整个条目,我就无法编辑地图条目的值
是否有一些类似的数据结构看起来像Map,但我可以编辑条目的值
代码:
for(字符串p:路径){
字符串[]arr=p.split(“\\\\”,2);
//这是一个文件中的元素。是否有其他文件???
List List=geteilt.get(arr[0]);
如果(列表!=null){
如果(arr.length>1){
//这是我的问题。我想在列表中添加一个字符串
列表。添加(arr[1]);
}
}否则{
如果(arr.length>1){
geteilt.put(arr[0],List.of(arr[1]);
}否则{
geteilt.put(arr[0],List.of());
}
}
}
您不需要任何专门针对您的案例的新数据结构,即Map如果您使用的是java 8或更高版本,则可以使用
compute
或computeIfPresent
。
例如:
Map<String, List<String>> test = new HashMap<>();
test.put("1", Arrays.asList("a", "b", "c"));
test.put("2", Arrays.asList("a", "b", "c"));
System.out.println(test); // prints {1=[a, b, c], 2=[a, b, c]}
test.computeIfPresent("1", (k, v) -> {
v.set(2, "changed");
return v;
});
System.out.println(test); // prints {1=[a, b, changed], 2=[a, b, c]}
Map test=newhashmap();
测试.put(“1”,数组.asList(“a”,“b”,“c”);
测试.put(“2”,数组.asList(“a”,“b”,“c”);
系统输出打印LN(测试);//打印{1=[a,b,c],2=[a,b,c]}
测试。计算呈现(“1”,(k,v)->{
v、 第(2)组,“变更”);
返回v;
});
系统输出打印LN(测试);//打印{1=[a,b,changed],2=[a,b,c]}
如果您正在使用任何旧版本的java,我的建议是使用util方法
我想如果不替换
用replace
或put
替换整个条目
这是不对的。下面给出了一个例子来证明这一点:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, List<String>> map = Map.of("abc", new ArrayList<>(Arrays.asList("a", "b")), "xyz",
new ArrayList<>(Arrays.asList("x", "y", "z")));
System.out.println("Original: " + map);
map.get("abc").set(1, "c");
map.get("abc").add("p");
System.out.println("Updated: " + map);
}
}
请添加您的代码,并描述哪些代码对您不起作用。我的代码不起作用,因为我使用的是
List.of()
。您正在使用新的ArrayList(Arrays.asList(此处有一些内容)
,这很有效。谢谢
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, List<String>> map = Map.of("abc", new ArrayList<>(Arrays.asList("a", "b")), "xyz",
new ArrayList<>(Arrays.asList("x", "y", "z")));
System.out.println("Original: " + map);
map.get("abc").set(1, "c");
map.get("abc").add("p");
System.out.println("Updated: " + map);
}
}
Original: {xyz=[x, y, z], abc=[a, b]}
Updated: {xyz=[x, y, z], abc=[a, c, p]}