java地图管理的改进

java地图管理的改进,java,data-structures,hashmap,Java,Data Structures,Hashmap,大家好,这是问题所在 我有类似的东西 private Map<String, Map<String, Double>> map1 = new HashMap<String, Map<String,Double>>(); private Map<String, Map<String, Double>> map2= new HashMap<String, Map<String,Double>>(); pr

大家好,这是问题所在

我有类似的东西

private Map<String, Map<String, Double>> map1 = new HashMap<String, Map<String,Double>>();
private Map<String, Map<String, Double>> map2= new HashMap<String, Map<String,Double>>();
private Map<String, Map<String, Double>> map3= new HashMap<String, Map<String,Double>>();
我认为这不是处理数据和确定哪个映射将存储信息的更好方法,特别是因为我必须重复functionForData()的所有代码,只更改我需要的映射。 我该如何改进这一点? 非常感谢

这解决了您的“代码重复”问题:

private void doSomething(数据,地图1){
地图放置(数据);
功能数据(地图);
}
私人无效剂量测定(数据){
如果(系数1){
剂量测定法(map1);
}
否则如果(系数2){
剂量测定法(map2);
}
否则如果(系数3){
剂量测定法(map3);
}
}

为if-else块中的引用指定适当的映射。然后,在确定正确的地图参考后,使用该参考调用
put
functionForData
一次。functionForData是否适用于所有地图?这个因素到底是什么?3张地图的用途是什么?数据是什么?我收到一个混合值的列表,我有3个映射,可以将它们分组到一个具有公共属性的子组中。
private void doSomething(data){
    if(factor1){
       map1.put(data);
       functionForData(map1);
    }
    else if(factor2){
       map2.put(data);
       functionForData(map2);
    }
    else if(factor3){
       map3.put(data);
       functionForData(map3);
    }
}
private void doSomething(data, Map<String, Map<String, Double>> map1) {
      map.put(data);
      functionForData(map);
}

private void doSomething(data){
    if(factor1){
       doSomething(map1);
    }
    else if(factor2){
       doSomething(map2);
    }
    else if(factor3){
       doSomething(map3);
    }
}