Java 在同步方法/函数中比较两个HashMap时面临的问题 static protected HashMap secMapMulti=new HashMap(); 静态保护的HashMap baMapMulti=新HashMap(); 静态保护的HashMap writeAndClientId=new HashMap(); 静态字符串client_id=“”; 静态PrintWriter pw_eq=null; 静态字符串[]拆分字符串数据; 静态整数数据长度; 公共静态同步void ServeAllWriter(字符串数据){ split_str_data=data.split(“,”); data_length=data.indexOf(“|”); 对于(Map.Entry:writeAndClientId.entrySet()){ pw_eq=entry.getValue(); client_id=entry.getKey(); if(baMapMulti.containsKey(nse_eq_client_id+”:“+split_str_data[0])){ pw_等式println(数据); }否则{ if(secMapMulti.containsKey(客户机id+“-”+分割数据[0])){ 数据=数据。子字符串(0,数据长度+1); pw_等式println(数据); } } } }

Java 在同步方法/函数中比较两个HashMap时面临的问题 static protected HashMap secMapMulti=new HashMap(); 静态保护的HashMap baMapMulti=新HashMap(); 静态保护的HashMap writeAndClientId=new HashMap(); 静态字符串client_id=“”; 静态PrintWriter pw_eq=null; 静态字符串[]拆分字符串数据; 静态整数数据长度; 公共静态同步void ServeAllWriter(字符串数据){ split_str_data=data.split(“,”); data_length=data.indexOf(“|”); 对于(Map.Entry:writeAndClientId.entrySet()){ pw_eq=entry.getValue(); client_id=entry.getKey(); if(baMapMulti.containsKey(nse_eq_client_id+”:“+split_str_data[0])){ pw_等式println(数据); }否则{ if(secMapMulti.containsKey(客户机id+“-”+分割数据[0])){ 数据=数据。子字符串(0,数据长度+1); pw_等式println(数据); } } } },java,multithreading,hashmap,Java,Multithreading,Hashmap,有时会比较两个HashMap,有时只比较HashMap的第一个值,奇怪的是两个HashMap包含需要根据特定条件进行比较的值。问题描述不太清楚?您有if-else分支语句如果一个条件为true,它将不会在else块中查找代码。这就是你的问题吗 当您使用if else时,无法同时比较两个地图。嘿,您的建议就是这样。如果密钥为baMapMulti或密钥为secMapMulti,则打印数据。“数据”将打印在其中一个键或查找中,或者如果在两个地图中都找不到键,则根本不会打印。但是数据永远不会从hashm

有时会比较两个HashMap,有时只比较HashMap的第一个值,奇怪的是两个HashMap包含需要根据特定条件进行比较的值。

问题描述不太清楚?您有
if-else
分支语句如果一个条件为true,它将不会在else块中查找代码。这就是你的问题吗


当您使用
if else

时,无法同时比较两个地图。嘿,您的建议就是这样。如果密钥为baMapMulti或密钥为secMapMulti,则打印数据。“数据”将打印在其中一个键或查找中,或者如果在两个地图中都找不到键,则根本不会打印。但是数据永远不会从hashmap查找中打印出来。但我不确定我是否回答了这个问题,因为这个问题并不十分清楚。请编辑问题以获得正确答案。一个拙见是,用更清晰的方式命名你的地图(ba和sec对我来说没有任何意义)。干杯

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