【问题标题】:Improvement in java maps managementjava地图管理的改进
【发布时间】:2013-12-04 18:07:52
【问题描述】:

大家好,这是问题

我有类似的东西

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

Map1、Map2 和 Map3 属于同一类型,但根据因素,这些地图中的数据将被聚合。

然后我有这段代码可以根据区分因素将数据放在每个地图上

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

我认为这不是处理数据和确定哪个地图将存储信息的更好方法,特别是因为我必须重复 functionForData() 的所有代码,只更改我需要的地图。 我该如何改进呢? 非常感谢!!

【问题讨论】:

  • 将正确的映射分配给 if-else 块中的引用。然后,在您确定了正确的地图参考后,调用 putfunctionForData 一次,并提供参考。
  • functionForData 是所有地图通用的吗?究竟是什么因素? 3张地图的目的是什么?会是什么数据?
  • 我收到了包含混合值的列表,我有 3 个地图用于将它们分组到具有共同属性的子组中。

标签: java data-structures hashmap


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-05-15
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多