java - 删除具有空值的 treeMap 条目

标签 java dictionary treemap

我正在尝试删除所有空值,但如果最后一个键的 treeSet 为空值,则它会保留在那里。所以我在想如何删除最后一个条目,如果它是空的。由于这是一个 treeMap,我认为我可以通过使用 tm.lastKey() 访问它来获取最后一个元素,但该方法似乎不存在。所以这个问题是双重的。首先,有没有办法删除包括最后一个在内的所有空值,第二个是 .lastKey() 方法在哪里?

public class Timing {
    private static Map<String, SortedSet> tm = new TreeMap<String, SortedSet>();

    public static Map manipulate() {
        SortedSet ss = new TreeSet();
        ss.add("APPL");
        ss.add("VOD");
        ss.add("MSFT");

        tm.put("2019-09-18",null);
        tm.put("2019-09-21",ss);
        tm.put("2019-09-22", null);
        tm.put("2019-09-20",ss);
        tm.put("2019-09-19", null);
        tm.put("2019-09-23",null);

        return tm;
    }

    public static void printMap() {
        for (String s: tm.keySet()) {
            System.out.println(s + ": " + tm.get(s));
        }
    }

    // Will delete all but the last one
    public static void deleteNull() {
        Set set = tm.entrySet();
        Iterator i = set.iterator();
        Map.Entry me = (Map.Entry) i.next();
        // there is no tm.lastKey()??
        while(i.hasNext()) {
            if (me.getValue() == null) {
                i.remove();
            }
            me = (Map.Entry) i.next();
        }
    }
}

最佳答案

要从 map 中删除值为 null 的所有条目,您可以将 deleteNull 方法替换为

tm.values().removeIf(Objects::isNull);

关于java - 删除具有空值的 treeMap 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38191661/

相关文章:

java - Azure 存储服务 REST API : Create Lease

.net - .NET中是否有只读通用字典?

java - 如何将字符串项放入字符串枚举的枚举的枚举映射中?

javascript - 如何绘制多个 d3js 可缩放 TreeMap

Java比较两个csv文件

java - 对 Map.containsValue 方法的困惑

java - 鼠标悬停在图像上时多个图像发生变化

java - 如何在 Java 中概括方法调用(以避免代码重复)

Python 字典 float

java 。按值排序的 map