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?
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();
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.
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.
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
#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
#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();