具有空键的 Java 不区分大小写的映射

2022-09-03 16:51:27

Java 中是否有 Map 实现将使用不区分大小写的字符串匹配作为键,但也支持空键?我知道那件事

new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER)

支持字符串键的不区分大小写匹配,但不支持空键。


答案 1

如果您使用的是 Java 8,则以下操作将创建一个与 null 兼容且不区分大小写的内容:TreeMap

Comparator<String> cmp = Comparator.nullsFirst(String.CASE_INSENSITIVE_ORDER);
TreeMap<String, String> map = new TreeMap<>(cmp);

无需外部库。


答案 2

您可以使用 CaseInsensitiveMap 来实现此目的。这将满足您的要求。它不区分大小写,并支持空键。

从文档

不区分大小写的地图。在将键添加到映射或与其他现有键进行比较之前,将使用 Unicode 数据文件中的信息以与区域设置无关的方式将它们转换为全部小写。

支持空键。

keySet() 方法返回所有小写键或空值。