如何修改哈希映射的值,该哈希映射将键和值作为字符串,并且'value'是由逗号分隔值组成的单个字符串



我正在尝试修改hashmap。"值"是由逗号分隔值组成的单个字符串。(例如:" aid = abc,bid = def,cid = gh2"(

我需要用DB的相应值替换它们的特定值。(例如,将投标更改为123,这将导致上述"值"字符串为:" aid = abc,bid = 123,cid = gh2"(

,然后将修改的"值"设置为相应的键,以便hashmap由修改值组成。

我尝试通过键进行迭代,并使用MAP(键(,这将赋予该值,我尝试将其转换为逗号分隔值的列表,然后在该列表中迭代,如果在每个字符串中,则我发现"出价"(上面的示例字符串(,然后进行必要的操作,然后将其放回哈希图(因为字符串arent arent ableable可突变(

>

for(字符串名称:outputmap.keyset(((
list urllist = arrays.aslist(outputmap.get(name(.split(","((;for(int i = 0; i

预期结果:" AID = ABC,BID = 123,CID = GH2"(操作后(实际结果:无法做到。

我已经使用了StringBuffer来修改字符串的问题,但是在这里使用它有点担心,因为这已经进行了多次转换。

代码需要符合Java 7的符合条件,因为它正在使用一些遗留环境中部署在客户端计算机中。这里的任何帮助将不胜感激。

static Map<String, String> replace(Map<String, String> map, String toReplace, String replacement) {
    return map.entrySet().stream()
                         .collect(Collectors.toMap(Entry::getKey, 
                       e -> transformValue(e.getValue(), toReplace, replacement)));
}
static String transformValue(String value, String toReplace, String replacement) {
    return Arrays.stream(value.split(","))
            .map(pair -> pair.split("="))
            .map(sPair -> sPair[0] + "=" + (toReplace.equals(sPair[0]) ? replacement : sPair[1]))
            .collect(Collectors.joining(","));
}

这将遍及MAP的所有条目,并创建一个具有更改值的新地图。示例:

var map = Map.of("key1", "aid=abc,bid=def,cid=gh2");
System.out.println(replace(map, "bid", "123").get("key1"));

将打印aid=abc,bid=123,cid=gh2

相关内容

最新更新