2011-02-16 42 views
0

我想實現兩個HashMap的使用,它似乎也或多或少成功也。但現在我的問題是我想更新基於check.ie的哈希值的值,如果userId是已經存在的哈希我需要更新對應的時間戳...多個HashMap的實現

下面給出的是我的代碼。我們如何完成值的更新。可以做到我的setValue ..?但如何..?請幫助我的朋友..

public static void main(String[] args) 
{ 
    HashMap sessionTimeStampHash = new HashMap<Long, Long>(); //sessionID is the key and timeStamp is the value 
    //userID is the key and sessionTimeStampHash object is the value 
    HashMap<String, HashMap<Long, Long>> userSessionHash = new HashMap<String, HashMap<Long, Long>>(); 

    sessionTimeStampHash.put("sessionID", "timeStamp"); 
    userSessionHash.put("userID", sessionTimeStampHash); 
    // System.out.println(userSessionHash); 
    sessionTimeStampHash = new HashMap(); 

    sessionTimeStampHash.put("sessionID1", "timeStamp1"); 
    userSessionHash.put("userID1", sessionTimeStampHash); 
    // System.out.println(userSessionHash); 
    sessionTimeStampHash = new HashMap(); 
    sessionTimeStampHash.put("sessionID2", "timeStamp2"); 
    userSessionHash.put("userID2", sessionTimeStampHash); 
    // System.out.println(userSessionHash); 
    sessionTimeStampHash = new HashMap(); 
    sessionTimeStampHash.put("sessionID3", "timeStamp3"); 
    userSessionHash.put("userID3", sessionTimeStampHash); 
    // System.out.println(userSessionHash); 


    for (Entry<String, HashMap<Long, Long>> entry : userSessionHash.entrySet()) 
    { 
    String key = entry.getKey(); 
    System.out.println(key); 
    System.out.println(entry.getValue()); 
    String userId = "userID3"; 
    if (key.equals(userId)) 
    { 
     System.out.println("Check Successful"); 
     String TimeStamp = newTime; 
     entry.setValue() // how can i change my timeStamp 
    } 
    } 
} 
+0

您聲明`sessionTimeStampHash`作爲`地圖`但你`sessionTimeStampHash.put( 「sessionID1」, 「timeStamp1」); `你在輸入'Long'值還是`String`值? – 2011-02-16 11:18:41

回答

0

你可以不使用for循環

if(userSessionHash.get(userId)!=null) 
    userSessionHash.get(userId).put(userSessionHash.get(userId).keySet().toArray[0], timestamp); 
+0

hi..Nishant ...我完全接受這個想法,但沒有使用forloop.But .... keySet()。toArray [0],...不適用,因爲userSessionHash.put()指向另一個用法。 。你可以建議任何其他想法..? – vidhya 2011-02-16 11:37:13

0

在你的第二張地圖上循環(我假設你想更新用戶的所有sessionIds)並修改該值。

if (key.equals(userId)) 
{ 
    System.out.println("Check Successful"); 
    String TimeStamp=newTime; 

    for (String sessionId : entry.getValue().keySet()) 
    { 
     entry.put(sessionid, timeStamp); 
    } 
} 
0
String userId = "userID3"; 
Long timeStamp = userSessionHash.containsKey(userId) ? userSessionHash.get(userSessionHash) : 0; 
userSessionHash.put(userId,new AtomicLong(request.getSession(false).getMaxInactiveInterval()))