gpt4 book ai didi

java - 流式传输和过滤 SortedMap

转载 作者:行者123 更新时间:2023-11-30 06:40:22 26 4
gpt4 key购买 nike

我确信这很简单,但出于某种原因我没有得到我想要的。

我有一个 SortedMap<String, String>值,我想流式传输和过滤它并仅保存一些值。

例如:

    SortedMap<String, String> input = new TreeMap<>();
values.put("accepted.animal", "dog");
values.put("accepted.bird", "owl");
values.put("accepted.food", "broccoli");
values.put("rejected.animal", "cat");
values.put("rejected.bird", "eagle");
values.put("rejected.food", "meat");

我只想保留键中包含“已接受”的值,并删除其他所有内容。

因此,结果将是:

{accepted.animal=dog, accepted.bird=owl, accepted.food=broccoli}

我如何通过 map 流式传输并过滤除包含“已接受”的键以外的所有内容?

这是我试过的:

private SortedMap<String, String> process(final Input input) {
final SortedMap<String, String> results = new TreeMap<>();

return input.getInputParams()
.entrySet()
.stream()
.filter(params -> params.getKey().contains("accepted"))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
}

但由于“无法从静态上下文中引用非静态方法”而失败。

最佳答案

您需要使用 Collectors.toMap 的另一个变体这样您就可以将合并函数和供应商传递到那里作为 TreeMap 收集:

return input.getInputParams()
.entrySet()
.stream()
.filter(params -> params.getKey().startsWith("accepted")) // small change
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(a, b) -> b, TreeMap::new));

关于java - 流式传输和过滤 SortedMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58331795/

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