Foros del Web » Programación para mayores de 30 ;) » Java »

Crear un vector del tipo "clase"

Estas en el tema de Crear un vector del tipo "clase" en el foro de Java en Foros del Web. Hola gente Les cuento, Quiero hacer algo parecido a las Esctructuras en C...por lo tanto cree una clase llamada Gente, como estoy recien empezando, la ...
  #1 (permalink)  
Antiguo 26/09/2009, 21:51
Avatar de almaesdi  
Fecha de Ingreso: enero-2005
Mensajes: 70
Antigüedad: 19 años, 3 meses
Puntos: 0
Crear un vector del tipo "clase"

Hola gente

Les cuento, Quiero hacer algo parecido a las Esctructuras en C...por lo tanto cree una clase llamada Gente, como estoy recien empezando, la hice facil...

Cita:
public class Gente {
private String Nombre;

public void setNombre(String Nombre){
this.Nombre = Nombre;
}
public String getNombre(){
return Nombre;
}
}
Despues me dijieron que en la ejecucion debia crear un array limitado que almacenara cada persona con su nombre

Cita:
Gente[] array = new Gente[2];
array[0] = new Gente ();
array[1] = new Gente ();
array[2] = new Gente ();
Pero ahora mi problema es...¿Que pasaria si necesito almacenar un numero indefinido de gente?"... Busque en internet Arrays Dinamicos, y lei que se debia usar Vector...Mi problema es que no sé declarar un Vector del tipo Gente y como despues hacerle un "new Gente();" a cada espacio....

Ojala me puedan ayudar

Gracias de antemano
  #2 (permalink)  
Antiguo 27/09/2009, 00:32
Avatar de Gguer  
Fecha de Ingreso: abril-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 1
Respuesta: Crear un vector del tipo "clase"

Hola

No necesariamente necesitas a fuerza Vector; puedes usar cualquier colección. Yo te recomiendo ArrayList para lo que quieres hacer, porque a mi parecer es más fácil de acceder a sus componentes.

Pues para declarar un array de tipo Gente sólo necesitas decirle a tu objeto ArrayList que va a recibir objetos de tipo Gente de la siguiente manera:

Código java:
Ver original
  1. ArrayList <Gente> obj_gente = new ArrayList<Gente>();
  2.  
  3. //Ahora para guardar nuevos objetos, lo que se hace es esto:
  4. Gente persona = new Gente();
  5. persona.setNombre("Alejandra");
  6. obj_gente.add(persona);

Creo que esto puede ayudarte. Si necesitas más información te paso este link a la documentación online de java sobre ArrayList para que veas todos sus métodos y puedas aprovechar al máximo esta colección.
  #3 (permalink)  
Antiguo 27/09/2009, 10:55
Avatar de almaesdi  
Fecha de Ingreso: enero-2005
Mensajes: 70
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Crear un vector del tipo "clase"

Gracias por la respuesta...

Al parecer funciona bien, pero tengo una duda....
Cuando al final haces un "obj_gente.add(persona);" ahi estas agregando un nuevo espacio al array, cierto?
y lo otro, como hago para mostrar por pantalla?
porque si utilizo esto:

System.out.println(""+persona.getNombre());

me muestra el ultimo nombre, y yo quiero mostrar uno en especifico de cierta ubicacion. Leyendo tu el link que me mostraste, dice q se usa el comando get(), pero no sabia implemetarlo cuando se trabaja con clases de esta manera...

gracias
  #4 (permalink)  
Antiguo 28/09/2009, 01:37
Avatar de Gguer  
Fecha de Ingreso: abril-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 1
Respuesta: Crear un vector del tipo "clase"

Hola de nuevo
Cita:
Iniciado por almaesdi Ver Mensaje
Cuando al final haces un "obj_gente.add(persona);" ahi estas agregando un nuevo espacio al array, cierto?
Cierto. Se agrega un nuevo objeto de tipo Gente a la colección con la información que ya le proporcionaste, en este caso el nombre.

Cita:
y lo otro, como hago para mostrar por pantalla?
Lo que puedes hacer es usar la otra versión de método add. Puedes agregar la posición en la que quieres guardar el registro.

Otra solución podría ser que compares el nombre que se le pide al usuario con los nombres que se encuentran registrados. Si el nombre se encuentra registrado muestras la información que desees de acuerdo a ese nombre. El recorrido de la colección lo harías con un for recorriendo posición por posición.

El uso de clases como parámetros en las colecciones es, en cierta forma, crear varias instancias de dicha clase. Cuando tu creas un objeto de alguna clase utilzas el nombe de dicho objeto seguido de un punto y el nombre del atributo o método al que quieres acceder, cierto? Cuando estés recorriendo un arreglo de objetos, en lugar de poner el nombre del objeto colocarás la posición del arreglo en la que se encuentra tal objeto. Esto es:

Acceso a un componente de una clase instanciada.
Código:
Gente persona = new Gente();
persona.getNombre();
Acceso a un objeto almacenado en una colección.
Código:
//obj_gente es el nombre del ArrayList del cual quiero obtener información
obj_gente.get(2).getNombre();
De nuevo te recomiendo que revises los métodos que ArrayList te ofrece para que puedas aprovecharla mejor.
  #5 (permalink)  
Antiguo 28/09/2009, 12:25
Avatar de almaesdi  
Fecha de Ingreso: enero-2005
Mensajes: 70
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Crear un vector del tipo "clase"

Gracias por la respuesta y tu tiempo....

Hice la siguientes lineas de codigo

Cita:
ArrayList <Gente> obj_gente = new ArrayList<Gente>();
Gente persona = new Gente();
persona.setNombre("Alejandra");
obj_gente.add(persona);
persona.setNombre("Alfredo");
obj_gente.add(persona);
persona.setNombre("Felipe");
obj_gente.add(persona);

System.out.println(""+obj_gente.get(0).getNombre() );
Si bien, le puse un get(0), sin embargo no me muestra "Alejandra" me muestra "Felipe"....y despues cambie el get(0), por get(1) y me seguia mostrando "Felipe" :S

gracias
  #6 (permalink)  
Antiguo 28/09/2009, 14:48
Avatar de DiabloGuardian  
Fecha de Ingreso: noviembre-2008
Ubicación: Hidalgo
Mensajes: 215
Antigüedad: 15 años, 5 meses
Puntos: 3
Respuesta: Crear un vector del tipo "clase"

Cita:
Iniciado por almaesdi Ver Mensaje
Si bien, le puse un get(0), sin embargo no me muestra "Alejandra" me muestra "Felipe"....y despues cambie el get(0), por get(1) y me seguia mostrando "Felipe" :S
lo que pasa es que por cada elemento que quieras agregar a tu array debes crear un nuevo objeto y lo que tu haces es que a un solo objeto solo le reemplazas los atributos pero siempre es el mismo objeto.

prueba esto...

Código:
Gente persona;
ArrayList <Gente> obj_gente = new ArrayList<Gente>();
persona = new Gente();
persona.setNombre("Alejandra");
obj_gente.add(persona);
persona = new Gente();
persona.setNombre("Alfredo");
obj_gente.add(persona);
persona = new Gente();	
persona.setNombre("Felipe");
obj_gente.add(persona);

System.out.println(""+obj_gente.get(0).getNombre() );
__________________
-=:[ Lo importante no es saber todo, sino saber buscar ]:=-
  #7 (permalink)  
Antiguo 28/09/2009, 19:29
Avatar de almaesdi  
Fecha de Ingreso: enero-2005
Mensajes: 70
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Crear un vector del tipo "clase"

Cita:
Iniciado por DiabloGuardian Ver Mensaje
lo que pasa es que por cada elemento que quieras agregar a tu array debes crear un nuevo objeto y lo que tu haces es que a un solo objeto solo le reemplazas los atributos pero siempre es el mismo objeto.

prueba esto...

Código:
Gente persona;
ArrayList <Gente> obj_gente = new ArrayList<Gente>();
persona = new Gente();
persona.setNombre("Alejandra");
obj_gente.add(persona);
persona = new Gente();
persona.setNombre("Alfredo");
obj_gente.add(persona);
persona = new Gente();	
persona.setNombre("Felipe");
obj_gente.add(persona);

System.out.println(""+obj_gente.get(0).getNombre() );
AHi me resulto ^^!!!

Gracias a ustedes 2, me ayudaron bastante
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:44.