gpt4 book ai didi

java - 计算并删除字符串列表中的重复项,但将重复项添加到键中(任何惯用的 java8 式方式?)

转载 作者:行者123 更新时间:2023-11-30 02:44:53 25 4
gpt4 key购买 nike

我有一个输入字符串(以 & 分隔)包含以下术语:

GenericRequest.param[i]
SpecificRequest.param[i]=XYZ
GenericRequest.param[i]

我希望输出得到“合并”(并用 & 分隔),并稍作调整:

GenericRequest.param[i]=2
SpecificRequest.param[i]=XYZ

到目前为止,我可以.split("&").filter(s -> s.endsWith("[i]")但这让我想到了单独的弦;我需要对所有字符串的可见性,以便我可以有效地计算重复项,删除重复项,然后将这些额外的元数据添加到相关键(在本例中,计算 GenericRequest.param[i] 的重复项,删除重复项,并使用 =2 对其进行扩充。

我可以通过构建过滤键的频率计数(以 "[i]" 结尾)并将其添加到未过滤键的列表中来完成此操作,但我只是不知道如何以惯用的 java8 方式执行此操作。

编辑:完整的字符串如下所示

GenericRequest.param[i]&SpecificRequest.param[i]=XYZ&GenericRequest.param[i]

这是我迄今为止尝试过的:

String str = "GenericRequest.param[i]&SpecificRequest.param[i]=XYZ&GenericRequest.param[i]";
String result = Arrays.asList(str
.split("&"))
.filter(s -> s.endsWith("[i]");
.magic(?);

最佳答案

试试这个,首先按键分组并计算其值,然后将键和值映射到字符串

    String str = "GenericRequest.param[i]&SpecificRequest.param[i]=XYZ&GenericRequest.param[i]";
Map<String, Long> map = Arrays.stream(str.split("&")).collect(Collectors.groupingBy(s -> s, Collectors.counting()));
System.out.println(map);
List<String> list = map.entrySet().stream().sorted(Map.Entry.comparingByKey())
.map(e -> e.getKey() + (e.getValue() == 1 ? "" : "=" + e.getValue())).collect(Collectors.toList());
System.out.println(list);

输出

{SpecificRequest.param[i]=XYZ=1, GenericRequest.param[i]=2}
[GenericRequest.param[i]=2, SpecificRequest.param[i]=XYZ]

关于java - 计算并删除字符串列表中的重复项,但将重复项添加到键中(任何惯用的 java8 式方式?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40479067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com