Java 8 在两个贴图上循环,并在另一个贴图中的一个贴图中查找替换出现的关键点
我有以下代码在两个集合上循环,并执行以下操作:Java 8 在两个贴图上循环,并在另一个贴图中的一个贴图中查找替换出现的关键点,java-8,hashmap,Java 8,Hashmap,我有以下代码在两个集合上循环,并执行以下操作: mapa.forEach((key, value) -> { key = Arrays.stream(key.split(" ")) .map(s -> mapb.getOrDefault(s.trim(), s.trim())) .collect(Collectors.joining(" ")); }); 我有两张地图: m
mapa.forEach((key, value) -> {
key = Arrays.stream(key.split(" "))
.map(s -> mapb.getOrDefault(s.trim(), s.trim()))
.collect(Collectors.joining(" "));
});
我有两张地图:
mapa:{“猫蝙蝠”,“45”}
mapb:{“cat”“c”}
上述代码用c替换出现的cat
mapa:{“c bat”,“45”}
我想修改上面的代码,将mapa键拆分为两个字符串
“c”,“bat”
并使用键的两部分和中的相应值作为方法的参数
方法1(“c c”、“bat”、“45”)
我该怎么做
我认为使用带过滤器的谓词是一种方法,但我需要帮助。llakk,我不明白这个映射循环的目的,但只是为了回答这个问题,我能够用下面的代码实现您所描述的
public void mapKeyConversion() {
Map<String, String> mapa = new HashMap<>();
Map<String, String> mapb = new HashMap<>();
mapa.put("cat cat bat", "45");
mapb.put("cat", "c");
mapa.entrySet().stream().
map(entry -> Arrays.stream((entry.getKey().concat(" " + entry.getValue())).split(" ")).
map(s -> mapb.getOrDefault(s.trim(), s.trim())).
collect(Collectors.joining(" "))
).forEach(s -> {
String[] sarr = s.split(" ");
method1(sarr[0] + " " + sarr[1], sarr[2], sarr[3]);
});
}
public void method1(String arg1, String arg2, String arg3) {
System.out.println(arg1 + " " + arg2 + " " + arg3);
}
注意:
c
是单个字符串。可以从方法method1()
的参数数量推断出这个设计是如何结束的?为什么键cc-bat
变成两个键cc
和bat
?我想把键分成两个字符串来做一些处理。我甚至考虑过使用三元组{stringparta=“cc”stringpartb=“bat”stringpartc=“45”}我现在需要3个部分-键分为2个部分,值为1个部分。如果您有一些设计建议来解释字符串c c bat
被拆分为c
和bat
的逻辑,我将非常欢迎。谢谢。这个解决方案对我很有帮助。我无法解释这个循环的目的,因为这只是这个大项目的一小部分,我正在尝试不同的方法。再次感谢你。我很感激。
c c bat 45