Ayuda java

tOWERR

Buenas, estoy practicando para un examen de java que tengo y estoy probando la clase vector. Yo tengo una clase Persona la cual tiene 2 campos, nombre que es string y edad que es integer. Inserto en el vector un objeto de la clase Persona. Y a la hora de obtener la posicion y mostrar el nombre y la edad de esa posicion nose como hacerlo, alguna ayuda?

barneyST

java.util.Vector está "obsoleto", aunque se puede seguir usando sin problemas.
Para obtener los datos del vector haz un cast:

((Persona)(v.elementAt(indice))).getNombre()

Supongo, que tendras la clase Persona correctamente creada con sus getters/setters, y que has rellenado el vector perfectamente.

Te aconsejo que mires ArrayList, que es exactamente igual:

ArrayList<Persona> v = new ArrayList<Persona>();
// llenas el ArrayList v.add(new Persona());
// Y para sacar datos igual
((Persona)(v.get(indice)).getNombre();
1 respuesta
B

http://download.oracle.com/javase/1.5.0/docs/api/

Accedes con get a la posicion directamente? luego solo tienes que acceder con el nombre de la referencia y . seguido del campo que quieres consultar. Vamos, no entiendo cual es el problema exactamente, si posteas el código te pongo como sería.

JuAn4k4

tendras que implementar el equals(Object o) en Persona, y despues en el listado hacer:

List<Persona> list = new ArrayList<Persona>();
Persona persona = new Persona("Paco" 42);
list.add(persona);

int i = list.indexOf(persona);
Persona p = null;
if ( i > 0 ) {
p = list.get(i);
} // else -> la persona no existe.

// persona.equals(p); te debería dar true.

1 respuesta
25 días después
pdj

Bueno un método que no recomiendo porque es una chapuza peeero no tienes que implementar el comparator ni nada (aunque sea una chorrada):

HashMap<Integer, Persona> mapa = new HashMap<Integer, Persona>();
//Rellenas personas
Persona person = new Persona("Pepe",30);
Integer indice = 1;
mapa.put(indice, person);
//Las obtienes con 
Persona p = (Persona) mapa.get(indice);
p.getName();

Uffff usarlo asi me duele a los ojos, si por ejemplo fuese el indice el DNI pues tendria "sentido" pero asi... bueno es una chapuza la verdad :P

Elektr0_ddr

#4 Realmente sería

if ( i > 0 ) p = list.get(i);
else -> la persona no existe.

que es lo que devuelve indexOf si no encuentra el elemento. El 0 significa que se encuentra en la primera posicion del List

GamA

#2 No entiendo para que le especificas al crear al ArrayList que le vas a insertar Personas, y luego casteas.

O no se lo dices y casteas o se lo dices con <Persona> y no casteas. Hacer las dos cosas es redundante y perder el tiempo.

Logicamente está mejor indicarle con <Persona> que vas a almacenar para evitar casts constantes. Vamos que sería así:

ArrayList<Persona> v = new ArrayList<Persona>();
// llenas el ArrayList v.add(new Persona());
// Y para sacar datos igual
v.get(indice).getNombre();
tOWERR

Ya está solucionado desde el mes pasado, hice ya el examen y aprobé. Muchas gracias a todos.
jajajajajajajajaja, seguir discutiendo del tema que me gusta aprender cosas nuevas.

Usuarios habituales