gpt4 book ai didi

java - 如何使用 Collectors toMap() 返回单个值?

转载 作者:行者123 更新时间:2023-11-30 09:59:28 26 4
gpt4 key购买 nike

我正在尝试让收集器 toMap() 工作以从 header 集中返回单个值。例如:输入字符串

[客户端:MYSQL、EDW、Oracle、WSO2、SMTP、唯一名称:Domain_v1]

代码:

private static Map<String, Object> headersTomap(String headers) {
String sHeaders = headers.replace("[", ""); sHeaders = sHeaders.replace("]",
""); logger.debug("sHeaders: " + sHeaders); return
Arrays.stream(sHeaders.split(", ")).map(s -> s.split(":"))
.collect(Collectors.toMap(s -> s[0], s -> s[1]));

}

以上代码返回:

clients: MYSQL,EDW,Oracle,WSO2,SMTP
UniqueName: Domain_v1

预期输出是:Domain_v1

请指教。上面的代码应该返回 Domain_v1 作为上面输入的输出。请帮忙。谢谢。

最佳答案

因为您已经将字符串转换为Map,您可以使用getOrDefault 获取UniqueName 键的值。

Returns the value to which the specified key is mapped, or defaultValue if this map contains no mapping for the key.

Map<String,String> map = Arrays.stream(sHeaders.split(", ")).map(s -> s.split(":"))
.collect(Collectors.toMap(s -> s[0], s -> s[1]));

map.getOrDefault("UniqueName","Not Present");

或者在一个序列中

Arrays.stream(sHeaders.split(", ")).map(s -> s.split(":"))
.collect(Collectors.toMap(s -> s[0], s -> s[1]))
.getOrDefault("UniqueName","Not Present");

如果您只需要与UniqueName 关联的值而不需要Map,那么您可以简单地采用这种方法

String res = Arrays.stream(sHeaders.split(", "))
.filter(s->s.contains("UniqueName:"))
.findFirst()
.map(name->name.split(":")[1])
.orElse("Not Present");

关于java - 如何使用 Collectors toMap() 返回单个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58861865/

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