首页 > 解决方案 > 在流 java 8 中解析逗号分隔的键值对

问题描述

我有一个字符串,它是逗号分隔的键值对,其中键是唯一的,并且不会多次存在,我想将字符串拆分为仅基于一个键“s”的键值过滤并为其返回输出在本例中为“GRADE3”。

下面是示例输入字符串

String test = “s:03,g:05,st:06”;

我想在 Java 8 中拆分上面的字符串并只读键“s”的值,即“03”,并且在内部从下面的 HashMap 中读取它的值,所以基本上我想在这个例子中为 03 返回字符串“GRADE3”。

private static final Map<String, String>  STUDENTS_MAP = new HashMap<>();

static {
    STUDENTS_MAP.put(“01”, “GRADE1");
    STUDENTS_MAP.put(“02”, “GRADE2");
    STUDENTS_MAP.put(“03”, “GRADE3");
}

任何人都可以使用流在 Java 8 中提供帮助吗?

标签: javajava-8

解决方案


您可以拆分字符串并过滤其流。

String test = "s:03,g:05,st:06";        
String search = "s";

String res = Arrays.stream(test.split(","))
                    .map(s -> s.split(":"))
                    .filter(x -> x[0].equals(search))
                    .findFirst()
                    .map(x -> STUDENTS_MAP.get(x[1]))
                    .orElse(null);

System.out.println(res);

推荐阅读