Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用收集器toMap()返回单个值?_Java - Fatal编程技术网

Java 如何使用收集器toMap()返回单个值?

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("]",

我试图让收集器toMap()从一组标头返回单个值。 例如:输入字符串

[客户端:MYSQL、EDW、Oracle、WSO2、SMTP、UniqueName: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]));

      }
预期输出为:域_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");