您可以使用 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录