Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 8 在两个贴图上循环,并在另一个贴图中的一个贴图中查找替换出现的关键点_Java 8_Hashmap - Fatal编程技术网

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