我不知道为什么不和我合作。我在地图上有一个空键但我无法捕捉它们。
Map<String, Long> map = new TreeMap<>();
//put data
map.entrySet().stream().forEach(e -> {
if (e.getKey().equals("") || e.getKey().equals(" ") || e.getKey() == "" || e.getKey() == " ") {
map.remove(e.getKey(), e.getValue());
}
});
编辑: 我对价值进行了测试:
map.entrySet().stream() .forEach(e -> {
if (e.getValue() == 133835) {
System.out.println("key empty: " + e.getKey().isEmpty());
System.out.println("key: >" + e.getKey() + "<");
System.out.println("val: " + e.getValue());
}
});
map = map.entrySet().stream().filter(
p -> !"".equals(p.getKey().trim())).
collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
map.entrySet().stream() .forEach(e -> {
if (e.getValue() == 133835) {
System.out.println("key empty: " + e.getKey().isEmpty());
System.out.println("key: >" + e.getKey() + "<");
System.out.println("val: " + e.getValue());
}
});
结果是:
key empty: false
key: ><
val: 133835
key empty: false
key: ><
val: 133835
我认为这个关键是gost)
答案 0 :(得分:1)
尝试使用e.getKey()。trim()。isEmpty()
答案 1 :(得分:0)
首先,我通常建议修剪而不是检查“”m(一个空格)和“”(空字符串)。其次可能是这种情况(一个具有多个空格的键)。
"".equals(e.getKey().trim())
编辑示例: Map map = new TreeMap();
map.put("", 1L);
map.put(" ", 2L);
map.put("3", 3L);
map.entrySet().stream().forEach(e -> {
System.out.println("key empty: " + e.getKey().isEmpty());
System.out.println("key: >" + e.getKey() + "<");
System.out.println("val: " + e.getValue());
});
map = map.entrySet().stream().filter(
p -> !"".equals(p.getKey().trim())).
collect(Collectors.toMap(Entry::getKey, Entry::getValue));
map.entrySet().stream().forEach(e -> {
System.out.println("key empty: " + e.getKey().isEmpty());
System.out.println("key: >" + e.getKey() + "<");
System.out.println("val: " + e.getValue());
});
输出是:
key empty: true
key: ><
val: 1
key empty: false
key: > <
val: 2
key empty: false
key: >3<
val: 3
AFTER REMOVAL
key empty: false
key: >3<
val: 3