2012-08-06 41 views
0
static protected HashMap<String, String> secMapMulti = new HashMap<String, String>(); 
static protected HashMap<String, String> baMapMulti = new HashMap<String, String>(); 
static protected HashMap<String,PrintWriter> writeAndClientId = new HashMap<String,PrintWriter>(); 
static String client_id = ""; 
static PrintWriter pw_eq=null; 
static String[] split_str_data; 
static int data_length; 

public static synchronized void serveAllWriters(String data) { 
    split_str_data = data.split(","); 
    data_length = data.indexOf('|'); 


    for (Map.Entry<String, PrintWriter> entry : writeAndClientId.entrySet()) { 
     pw_eq = entry.getValue(); 
     client_id = entry.getKey(); 

     if (baMapMulti.containsKey(nse_eq_client_id + ":" + split_str_data[0])) { 
      pw_eq.println(data); 
     } else { 
      if (secMapMulti.containsKey(client_id + "-" + split_str_data[0])) { 
       data = data.substring(0, data_length + 1); 
       pw_eq.println(data); 
      } 
     } 
    } 
} 

有時兩個HashMap中被比較,有時只能HashMap中的第一個值被比較,奇怪的事情是怎麼回事,兩個哈希映射包含需要在比較值特定條件的基礎。在synchronized方法比較兩個HashMap中面臨的問題/功能

回答

0

問題描述不是很清楚嗎?你有if else分支語句,如果一個條件是真的,它不會查看else塊中的代碼。這是你的問題是什麼?

世界上沒有像您那樣使用if-else

0

餵你的建議只有這兩種地圖會得到在同一時間進行比較。如果鍵是baMapMulti或鍵是在secMapMulti中,則要麼打印數據。如果在這兩張地圖中找不到關鍵字,「數據」將被打印在查找關鍵字中的一個關鍵字中,或者根本不會打印。但是數據永遠不會從哈希圖查找中打印出來。但我不確定我是否回答了問題,因爲問題不是很清楚。請編輯正確答案的問題。一個簡單的觀點是,以更清晰的方式給你的地圖命名(ba和sec對我來說沒有任何意義)。