Hola...
Pues eso no le veo problema, solo que tendríamos que cambiar la Interface a implementar...
PojoA
public class PojoA {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
return Campo1;
}
public void setCampo1
(String campo1
) { Campo1 = campo1;
}
return Campo2;
}
public void setCampo2
(String campo2
) { Campo2 = campo2;
}
return Campo3;
}
public void setCampo3
(String campo3
) { Campo3 = campo3;
}
}
Main
public class ClaseMain {
public static void main
(String[] args
) { int id = rnd.nextInt(3)+1;
int size = llenarHashMap().size();
int total = 0;
System.
out.
println("Id: " + llenarHashMap
().
get(id
).
getId() + " Nombre: " + llenarHashMap().get(id).getCampo1() +
" Apellido: " + llenarHashMap().get(id).getCampo2() +
" Anime: " + llenarHashMap().get(id).getCampo3());
for(int i = 1; i <= size; i++){
total += llenarHashMap().get(i).getId();
}
System.
out.
println("TOTAL: " + total
); }
public static HashMap<Integer,PojoA> llenarHashMap(){
HashMap<Integer,PojoA> map = new LinkedHashMap<Integer,PojoA>();
PojoA a = new PojoA();
a.setId(1);
a.setCampo1("Yuno");
a.setCampo2("Gasai");
a.setCampo3("Mirai Nikki");
map.put(a.getId(),a);
a = new PojoA();
a.setId(2);
a.setCampo1("Asuna");
a.setCampo2("Yuuki");
a.setCampo3("Sword Art Online");
map.put(a.getId(),a);
a = new PojoA();
a.setId(3);
a.setCampo1("Hinata");
a.setCampo2("Hyuga");
a.setCampo3("Naruto");
map.put(a.getId(),a);
return map;
}
}
Como podemos observar, en vez de implementar la Interface
List cambiamos a un
HashMap que a su vez hereda de la clase
Map siendo esta la clase padre, sin embargo, eh leído que
HashMap tiene un poco mas de rapidez cuando se trata de gran cantidad de datos, aunque sigo buscando una diferencia que me convenza. Cabe mencionar que la característica importante que tiene nuestro elemento en particular es que se caracteriza por su estructura;
HashMap (K,V), donde K significa nuestro identificador (Key) que tendrá V (value) que viene siendo el valor correspondiente a ese Key. Para mayor información te invito a consultar la API de Java para que puedas comprender con mejor claridad.
También realice un cambio a nuestro objeto ya que agregue un campo mas el cual es el identificador (Id) como podrás ver en la clase
PojoA, además realice un cambio a nuestro método el cual me retornara un
HashMap<Integer,PojoA>, esto significa que como Key le declaro un entero y como valor le declaro un objeto. Posteriormente llenamos el K y el V correspondiente como puedes ver en el código.
Finalmente, solo es cuestión de generar un numero aleatorio entre 1 al 3, la razón de sumarle un 1 al final es porque sino nos genera números del 0 al 2. Pasamos a imprimir el valor correspondiente de acuerdo al numero que el HashMap identificara como Key. Como ya lo que tiene V es un objeto lleno, entonces puedo acceder a los valores de el mediante los métodos Get.
Para tu problema de la suma, yo estoy sumando el ID pero obviamente tu sumarías el valor que tengas que sumar, el proceso es simple ya que como puedes ver es simplemente un bucle for y acceder a los valores que tiene el campo que voy a sumar de acuerdo al K que le voy a pasar.
Cualquier duda y/o inconveniente, aquí estamos. Suerte!