Test Foro de elhacker.net SMF 2.1

Programación => Programación General => 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 (java) [Seleccionar]
public void setEdad(int e) {
    edad = e;
}

public int getEdad() {
    return edad;
}


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

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


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

Código (java) [Seleccionar]
LinkedList <Persona> lista = new LinkedList<Persona>();
lista.add(new Persona(10)); //agrega una nueva persona al final de la lista
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.