我有2张地图:
Map<KeyMapMediciones,ResultadoConsultaNegocioStandard> medicionesMap =
new HashMap<KeyMapMediciones,ResultadoConsultaNegocioStandard>();
Map<KeyMapMediciones, ResultadoConsultaNegocioStandard> medicionesAplicacionMap =
new HashMap<KeyMapMediciones,ResultadoConsultaNegocioStandard>();
bean KeyMapMediciones
有3个属性:
private int tipoTransaccion;
private String canal;
private String aplicacion;
我需要在其他地图中KeyMapMediciones.canal
= KeyMapMediciones.aplicacion
的两张地图之间建立关系。
对于每个aplicacion
,我需要获得n canal
。
答案 0 :(得分:0)
我试图猜测你在寻找什么。我做出了这样的假设:
medicionesMap
中,您始终拥有canal != null
和aplicacion == null
medicionesAplicacionMap
中,您始终拥有canal == null
和aplicacion != null
canal
与aplication
我建议重新考虑您的数据结构。我会建议这样的事情:
/** superclass for medicions */
abstract class Medicion {
public int tipoTransaccion;
public ResultadoConsultaNegocioStandard standard;
}
/** those medicions with canals, referencing medicions with aplicacions */
class MedicionCanal extends Medicion {
public String canal;
public MedicionAplicacion medicionAplicacion;
}
/** those medicions with aplicacions */
class MedicionAplicacion extends Medicion {
public String aplicacion;
}
您可以使用现有数据轻松填写新类:
import java.util.*;
import java.util.Map.Entry;
/** old structure */
class KeyMapMediciones {
public int tipoTransaccion;
public String canal;
public String aplicacion;
}
class Snippet {
public static void main(String[] args) {
Map<KeyMapMediciones,ResultadoConsultaNegocioStandard> medicionesMap =
new HashMap<KeyMapMediciones,ResultadoConsultaNegocioStandard>();
Map<KeyMapMediciones, ResultadoConsultaNegocioStandard> medicionesAplicacionMap =
new HashMap<KeyMapMediciones,ResultadoConsultaNegocioStandard>();
// create map of aplicacion to Medicion by second map
Map<String, MedicionAplicacion> aplicacions = new HashMap<>();
for (Entry<KeyMapMediciones, ResultadoConsultaNegocioStandard> entry : medicionesAplicacionMap.entrySet()) {
KeyMapMediciones key = entry.getKey();
ResultadoConsultaNegocioStandard value = entry.getValue();
// copy data from old structure into new Medicion
MedicionAplicacion medicionAplicacion = new MedicionAplicacion();
medicionAplicacion.tipoTransaccion = key.tipoTransaccion;
medicionAplicacion.aplicacion = key.aplicacion;
medicionAplicacion.standard = value;
aplicacions.put(medicionAplicacion.aplicacion, medicionAplicacion);
}
// create map of canal to Medicion by second map
Map<String, MedicionCanal> canals = new HashMap<>();
for (Entry<KeyMapMediciones,ResultadoConsultaNegocioStandard> entry : medicionesMap.entrySet()) {
KeyMapMediciones key = entry.getKey();
ResultadoConsultaNegocioStandard value = entry.getValue();
// copy data from old structure into new Medicion
MedicionCanal medicionCanal = new MedicionCanal();
medicionCanal.tipoTransaccion = key.tipoTransaccion;
medicionCanal.canal = key.canal;
medicionCanal.standard = value;
// link to aplication
medicionCanal.medicionAplicacion = aplicacions.get(key.canal);
canals.put(medicionCanal.canal, medicionCanal);
}
}
}
之后,您可以使用这些对象引用来查询和重用您的数据:
// find out the aplication of the medicion with canal == "canalA"
String aplicacionOfCanalA = canals.get("canalA").medicionAplicacion.aplicacion;