Foro de elhacker.net

Programación => Java => Mensaje iniciado por: lanun en 11 Julio 2014, 12:56 pm



Título: Duda novato LinkedList
Publicado por: lanun en 11 Julio 2014, 12:56 pm
Hola, acabo de empezar con java y probando con las listas enlazadas me ha surgido una duda: he creado dos clases, la main y una clase Persona, en la que solo tengo un campo edad y un constructor en el que asigno un valor a la variable edad.

En el Main he creado una lista enlazada de Personas (LinkedList <Persona> lista = new LinkedList <Persona>();)
El caso es que no sé cómo acceder a la variable edad de una clase Persona que está dentro de la lista enlazada. (Supongo que será una tontería de la sintaxis, perdonad la ignorancia).

Muchas Gracias.


Título: Re: Duda novato LinkedList
Publicado por: gordo23 en 11 Julio 2014, 13:49 pm
En la clase persona tendrías que crear getters y setters, estos son métodos para acceder y modificar campos de la clase, en este caso, en la clase persona crea estos dos métodos:

Código
  1. public void setEdad(int e) {
  2.    edad = e;
  3. }
  4.  
  5. public int getEdad() {
  6.    return edad;
  7. }

Ahora puede acceder y/o modificar la variable edad desde otras clases con:

Código
  1. Persona p = new Persona(10); //segun tu post este constructor inicializa la variable edad, en este caso con el valor 10
  2. int edad = p.getEdad();
  3. System.out.println(edad); //imprime 10
  4. p.setEdad(11);
  5. System.out.println(edad); //imprime 11

Como ves, no es muy dificil. Por último desde la lista se accede así:

Código
  1. LinkedList <Persona> lista = new LinkedList<Persona>();
  2. lista.add(new Persona(10)); //agrega una nueva persona al final de la lista
  3. System.out.println(lista.getLast().getEdad()) //imprime la edad del ultimo elemento de la lista, en este caso 10

Bueno, espero que lo hayas entendido, suerte y saludos.-


Título: Re: Duda novato LinkedList
Publicado por: lanun en 11 Julio 2014, 16:15 pm
Ok, entendido, muchas gracias por la respuesta, me estaba liando con una tontería, gracias de nuevo.


Título: Re: Duda novato LinkedList
Publicado por: Nasty35 en 11 Julio 2014, 16:35 pm
Si solo tienes un objeto introducido sería:
http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html#get(int)
Persona persona = lista.get(0);
Con el get obtienes la persona, y el argumento lo que indica en qué posición de la lista está.
(En programación se empieza a contar desde 0).


Título: Re: Duda novato LinkedList
Publicado por: lanun en 11 Julio 2014, 17:04 pm
¿Pero puedo hacer esa asignación entre elementos de la lista directamente y no genero errores?

Hasta donde yo sé (en C++), tenía que crear métodos de copia en las clases.


Título: Re: Duda novato LinkedList
Publicado por: Chuidiang en 13 Julio 2014, 16:56 pm
Hola:

Aunque dicen que en java no hay punteros, realmente si vienes de C/C++ se entiende mejor si piensas que todo son punteros.

Persona persona

realemente es un puntero a Persona, lo que en C++ sería Persona *persona. Por eso se hacen cosas como

Persona persona = new Persona(22);

Si haces esta asiginación  Persona persona = lista.get(0); , tienes el mismo objeto Persona dentro de la lista y en la variable persona, es como si en C++ tuvieras un puntero apuntando al elemento de la lista (persona realmente "apunta" al elemento Persona de la posición 0 de la lista. Si modificas la edad de persona, también estás modificando la de dentro del elemento de la lista.

Se bueno.