Java 使用 Lambda 将字符串转换为 Map 并获取指定键的值
您可以使用 Java 的 Stream API 和 Lambda 表达式来实现将给定字符串转换为 Map,并且可以避免空指针异常。下面是一个示例代码:
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
String str = '100001|30,100002|45';
Map<String, Integer> map = new HashMap<>();
map = convertToMap(str);
int value = map.getOrDefault('100005', 0);
System.out.println(value);
}
public static Map<String, Integer> convertToMap(String str) {
Map<String, Integer> map = new HashMap<>();
str = str.replaceAll('\s+', ''); // 去除空格
String[] pairs = str.split(',');
for (String pair : pairs) {
String[] keyValue = pair.split('\|');
if (keyValue.length == 2) {
String key = keyValue[0];
int value = Integer.parseInt(keyValue[1]);
map.put(key, value);
}
}
return map;
}
}
在上述代码中,我们首先定义了一个 convertToMap 方法,该方法接受一个字符串作为参数,并将其转换为一个 Map 对象。在转换过程中,我们使用了正则表达式 \s+ 去除字符串中的空格,然后使用 , 分割字符串得到键值对,再使用 | 分割键值对得到键和值。最后,我们将键值对放入 map 中。
在 main 方法中,我们调用 convertToMap 方法将给定的字符串转换为 map 对象,并使用 getOrDefault 方法获取键为 '100005' 的值,如果该键不存在,则返回默认值 0。最后,我们将获取到的值打印输出。
请注意,上述代码假设给定的字符串格式是正确的,即键值对之间使用 , 分隔,键和值之间使用 | 分隔,并且键和值都是有效的整数。如果给定的字符串格式不正确,可能会导致异常。
原文地址: https://www.cveoy.top/t/topic/pkLK 著作权归作者所有。请勿转载和采集!