Como comparar contenido de dos HashMap y sustituir el valor de uno de ellos
Publicado por Roberto (16 intervenciones) el 03/05/2021 15:43:04
Hola
Estoy intentado comparar el contenido de dos colecciones HasMap<String, String>(), y souy incapaz, pruebo una cosa y otra, y me van saliendo resultados, pero nunca el que deseo
Veamos:
Tengo ésta colección que almacena número de socio y nombre del socio
:
por otra parte, tengo ésta otra colección que almacena las reservas de los socios:
estoy intentando comparar los valores de numero en dataN y Socio en data
La intentación sería, que en lugar de darme el número de socio almacenado en "data", me diera el nombre que corresponda a ese número de socio y está almacenado en "dataN", sustituyendo el número por el nombre en la colección "data", que es la que envío luego al listView
Alguna idea ?
Alguien me puede ayudar ?
Un saludo
Estoy intentado comparar el contenido de dos colecciones HasMap<String, String>(), y souy incapaz, pruebo una cosa y otra, y me van saliendo resultados, pero nunca el que deseo
Veamos:
Tengo ésta colección que almacena número de socio y nombre del socio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
dataN = new ArrayList<Map<String,String>>();
try {
Statement stUs = miConexion.metodoConexionBD().createStatement();
ResultSet ra = stUs.executeQuery("select f_ConsumerNO, f_ConsumerName from t_b_Consumer");
while (ra.next()) {
Map<String, String> dtnameN = new HashMap<String, String>();
dtnameN.put("Numero", ra.getString("f_ConsumerNO"));
dtnameN.put("Nombre", ra.getString("f_ConsumerName"));
dataN.add(dtnameN);
}
ra.close();
stUs.close();
por otra parte, tengo ésta otra colección que almacena las reservas de los socios:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Statement stn = miConexion.metodoConexionBD().createStatement();
ResultSet rst = stn.executeQuery("select * from Reservas where SalaID = " + 1 + " order by ID_Reserva Desc");
data = new ArrayList<Map<String,String>>()
while (rst.next()) {
Map<String, String> dtname = new TreeMap<String, String>();
dtname.put("Sala", rst.getString("SalaID"));
dtname.put("Fecha", rst.getString("FechaReserva"));
dtname.put("Hora1", rst.getString("HoraReserva"));
dtname.put("Socio", rst.getString("SocioID"));
dtname.put("Hora2", rst.getString("HoraReserva"));
dtname.put("Hora3", rst.getString("HoraReserva"));
data.add(dtname);
}
rst.close();
stn.close();
estoy intentando comparar los valores de numero en dataN y Socio en data
1
2
3
4
5
6
7
8
9
int mayor = dataN.size();
if (data.size() > dataN.size()) {
mayor = data.size();
}
for (int i = 0; i < mayor; i++){
if (dataN.get(i).containsValue("Numero") == (data.get(i).containsValue("Socio"))){
data.get(i).put("Socio", String.valueOf(dataN.get(i).containsValue("Nombre")));
}
}
La intentación sería, que en lugar de darme el número de socio almacenado en "data", me diera el nombre que corresponda a ese número de socio y está almacenado en "dataN", sustituyendo el número por el nombre en la colección "data", que es la que envío luego al listView
Alguna idea ?
Alguien me puede ayudar ?
Un saludo
Valora esta pregunta


0