Java 如何使用收集器toMap()返回单个值?
我试图让收集器toMap()从一组标头返回单个值。 例如:输入字符串 [客户端:MYSQL、EDW、Oracle、WSO2、SMTP、UniqueName:Domain_v1] 代码:Java 如何使用收集器toMap()返回单个值?,java,Java,我试图让收集器toMap()从一组标头返回单个值。 例如:输入字符串 [客户端:MYSQL、EDW、Oracle、WSO2、SMTP、UniqueName:Domain_v1] 代码: private static Map<String, Object> headersTomap(String headers) { String sHeaders = headers.replace("[", ""); sHeaders = sHeaders.replace("]",
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]));
}
预期输出为:域_v1
请告知。上述代码应返回域_v1作为上述输入的输出。请帮忙。谢谢。由于您已经将字符串转换为
映射
,您可以使用
返回指定键映射到的值,如果此映射不包含该键的映射,则返回defaultValue
如果您只需要与UniqueName
关联的值,而不需要Map
,那么您可以简单地使用这种方法
String res = Arrays.stream(sHeaders.split(", "))
.filter(s->s.contains("UniqueName:"))
.findFirst()
.map(name->name.split(":")[1])
.orElse("Not Present");
为什么不能执行
map.get(“UniqueName”)
Collectors.toMap()
返回一个映射。它不用于返回单个值。这返回类型不匹配:无法从字符串转换为映射错误如果要返回String
只需将返回类型更改为String
,或者只返回UniqueName:Domain\u v1
@pitsa?你想回报什么?谢谢你的帮助。我需要返回UniqueName ie Domain_v1的值。然后将该方法的返回类型更改为String
@pitsa感谢您的帮助。非常感谢@Deadpool
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");
String res = Arrays.stream(sHeaders.split(", "))
.filter(s->s.contains("UniqueName:"))
.findFirst()
.map(name->name.split(":")[1])
.orElse("Not Present");