在项目中,我需要删除键值大于某个键的所有对象(键类型为Date
,如果重要的话)。
据我所知,在Java中实现的TreeMap
是一个红黑树,它是一个二叉搜索树。因此,删除子树时我应该O(n)
但除了制作尾部视图并逐个删除之外,我找不到任何方法来执行此操作,这需要O(logn)
。
实现此功能的任何好主意?我相信treeMap是正确使用的数据结构,应该能够做到这一点。
提前致谢
答案 0 :(得分:7)
非常简单。不要逐个删除条目,而是使用Map.clear()
删除元素。在代码中:
map.tailMap(key).clear();
答案 1 :(得分:0)
public class TreeMapDemo {
public static void main(String[] args) {
// creating maps
TreeMap<Integer, String> treemap = new TreeMap<Integer, String>();
SortedMap<Integer, String> treemapincl = new TreeMap<Integer, String>();
// populating tree map
treemap.put(2, "two");
treemap.put(1, "one");
treemap.put(3, "three");
treemap.put(6, "six");
treemap.put(5, "five");
System.out.println("Getting tail map");
treemap.tailMap(3).clear();
System.out.println("Tail map values: " + treemapincl);
System.out.println("Tree map values: " + treemap);
}
}
这将删除树形图中的元素。