2013-04-11 3 views
0

У меня есть TreeMap с ключом, значение пары в качестве SessionIdNodeКак получить значения больше определенного ключа в TreeMap

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); 
    } 


} 

Этот класс, который используется внутри в TreeMap, как показано ниже:

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); 

Теперь, на мой вопрос, он сортирует SessionNodes на основе пользовательского компаратора, который по существу соответствует времени.

Теперь скажите, что с учетом времени t1 мне нужно удалить все ключи в treemap, у которых есть значение временной метки SessionNode> t1.

Как это сделать? Любая помощь будет принята с благодарностью.

спасибо.

ответ

2
map.tailMap(new SessionNode(null, t1), false).clear(); 
+0

Поскольку хэш-код находится из SessionID, который берется в нуле, мы не можем найти sessionNode с нулевым ключом, с этой меткой времени, поэтому tailmap мы получаем из этого всей карта снова, после чего мы очищаем всю карту. Таким образом, теперь элементы равны 0. Мне нужно очистить после этой отметки времени t1. Элементы ранее должны быть сохранены. Благодарим вас за руководство. Или мне нужна другая структура данных для этой цели? – 2013-04-11 20:19:57

Смежные вопросы