Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在树状图中获得比某个键更多的值_Java_Collections_Treemap - Fatal编程技术网

Java 如何在树状图中获得比某个键更多的值

Java 如何在树状图中获得比某个键更多的值,java,collections,treemap,Java,Collections,Treemap,我有一个树形图,其中键、值对作为sessiondNode private class SessionNode { String sessionid; Timestamp time; private SessionNode (String sessionid, long d) { this.time = new Timestamp(d); this.sessionid = sessionid; } publ

我有一个树形图,其中键、值对作为sessiondNode

private class SessionNode 
{
    String sessionid;
    Timestamp time;


    private SessionNode (String sessionid, long  d)
    {
        this.time = new Timestamp(d);
        this.sessionid = sessionid;
    }


    public int hashCode()
    {
        return sessionid.hashCode();

    }

    public boolean equals(SessionNode node)
    {
        return this.sessionid.equals(node.sessionid);
    }


}
此类在树映射中内部使用,如下所示:

private final Comparator< SessionNode> sessionNodeComparator = new Comparator<SessionNode>() {
        @Override public int compare(SessionNode s1, SessionNode s2) 
        {
            return ((SessionNode)s1).time.compareTo(s2.time);   
        }           
    };

private Map <SessionNode , SessionNode> map = new TreeMap <SessionNode , SessionNode>( sessionNodeComparator);
private final ComparatorsessionNodeComparator=new Comparator(){
@重写公共int比较(SessionNode s1,SessionNode s2)
{
return((SessionNode)s1.time.compareTo(s2.time);
}           
};
私有映射Map=newtreemap(sessionNodeComparator);
现在,我的问题是,它根据自定义比较器对会话节点进行排序,这基本上是根据时间进行的

现在假设给定一个时间t1,我需要删除树映射中SessionNode timestamp value>t1的所有键

我如何做到这一点?? 任何帮助都将不胜感激


谢谢。

由于hashcode是从sessionid中找到的,sessionid被视为null,因此我们无法找到带有null键和该时间戳的sessionNode,因此我们从中得到的tailmap再次是整个map,然后我们清除整个map。所以元素现在是0。我需要在时间戳t1之后清除。应保留以前的要素。谢谢你的指导。或者为此我需要一些其他数据结构?
map.tailMap(new SessionNode(null, t1), false).clear();