2012-08-06 39 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对我来说没有任何意义)。