Duda novato LinkedList

Iniciado por lanun, 11 Julio 2014, 12:56 PM

0 Miembros y 1 Visitante están viendo este tema.

lanun

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.

gordo23

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.-

lanun

Ok, entendido, muchas gracias por la respuesta, me estaba liando con una tontería, gracias de nuevo.

Nasty35

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).

lanun

¿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.

Chuidiang

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.