Gil*_*ilo 13 java collections null case-insensitive
Java中是否存在使用区分大小写的字符串匹配的Map实现,但是还支持null键?我知道
new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER)
Run Code Online (Sandbox Code Playgroud)
支持不区分大小写的String键匹配,但不支持null键.
Hen*_*sen 30
如果您使用的是Java 8,则以下内容将创建一个与null兼容,不区分大小写的TreeMap:
Comparator<String> cmp = Comparator.nullsFirst(String.CASE_INSENSITIVE_ORDER);
TreeMap<String, String> map = new TreeMap<>(cmp);
Run Code Online (Sandbox Code Playgroud)
无需外部库.
您可以使用CaseInsensitiveMap.这将满足您的要求.它不区分大小写,也支持null键.
来自doc
不区分大小写的Map.在将键添加到映射或与其他现有键进行比较之前,可以使用Unicode数据文件中的信息以与语言环境无关的方式将它们转换为全小写.
支持空密钥.
keySet()方法返回所有小写键或空值.
如果您不想使用外部库,您可以以可预测的方式String.CASE_INSENSITIVE_ORDER为该类别创建自己的包装器null:
NavigableMap<String,String> m = new TreeMap(
new Comparator<String>() {
public int compare(String s1, String s2) {
if (s1 == null && s2 == null) return 0;
if (s1 != null && s2 != null) {
return String.CASE_INSENSITIVE_ORDER.compare(s1, s2);
}
return s1 == null ? -1 : 1;
}
}
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1228 次 |
| 最近记录: |