Java:在地图中找到空键:

时间:2014-12-11 21:51:48

标签: java collections map

我不知道为什么不和我合作。我在地图上有一个空键但我无法捕捉它们。

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)

2 个答案:

答案 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