Clase Lista

Iniciado por Beginner Web, 28 Marzo 2019, 02:51 AM

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

Beginner Web

Hola tengo una duda como hago para crear una LinkedList(); de objetos?
7w7

rub'n

#1
Cita de: Beginner Web en 28 Marzo 2019, 02:51 AM
Hola tengo una duda como hago para crear una LinkedList(); de objetos?

Crea tu javabean primero , la típica clase con setters y getters, y luego usas el método add() de la list  :D

Código (java) [Seleccionar]

final LinkedList<Persona> list = new LinkedList<>();
list.add(new Persona("Beginner","web",14));


El Bean persona con 3 atributos, 2 String , y un int o Integer, faltarían los setters y getters para acceder a dichos atributos, ojo los setters quitan inmutabilidad a un objeto haciendo que no sean aptos para un ambiente de concurrencia, si es inmutable tu bean, o sea:

 * Clase con final (public final class Persona) para que no se pueda heredar.
 * Sin setters
 * Variables de instancia con final
  - y puedes añadir por comodidad una clase estática dentro Aka Builder/AbstractoGenerico para inicializar sus variables de instancia pues mucho mejor, ya que este te creará una copia mutable de Persona con la que puedes trabajar.


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

Beginner Web

#2
Seguro? no te faltó algo a la hora de declarar la lista de Persona?  :huh:
7w7

rub'n

#3
Cita de: Beginner Web en 28 Marzo 2019, 16:41 PM
Seguro? no te faltó algo a la hora de declarar la lista de Persona?  :huh:

:-\ estoy 90% seguro que no probaste el ejemplo, o no hiciste el import bien, que este último no lo creo.

Y eso que lo escribo desde mi Android .

El operador diamante puede ir vacío también, como con el objeto en el, pero siendo redundante, o sea,


Código (java) [Seleccionar]
final LinkedList<Persona> lista = new LinkedList<Persona>(); // redundante


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

Beginner Web

Que bueno, estoy usando estos metodos para hacer pruebas pero me gustaria sacar la informacion de la lista dato por dato como hacia en mi querido C++  :laugh:

Código (java) [Seleccionar]
final LinkedList<Alumno> list = new LinkedList<>();
        list.add(new Alumno("Ana", "Keldysh", (short) 14));

        Principal.mostrarMiLista(list);


Código (java) [Seleccionar]
    public static void mostrarMiLista(LinkedList list) {

        if (list.isEmpty()) {
            System.out.println("Lista vacia");
            return;
        }

        Iterator it = list.iterator();

        System.out.println("Elementos de la lista:");
        while (it.hasNext()) {
            System.out.println(it.next().toString());
        }

    }


Quiero hacer esto

Código (cpp) [Seleccionar]
void mostrar_lista(nodo lista)
{
nodo i;
if(lista!=NULL){
for(i=lista;i!=NULL;i=i->sig){
cout<<"Legajo: "<<i->dato.legajo<<endl;
cout<<"Apellido: "<<i->dato.apellido<<endl;
cout<<"Nombre: "<<i->dato.nombre<<endl<<endl;
}
}
else
cout<<"LISTA VACIA"<<endl;
}


:huh:
7w7

rub'n

#5
Código (java) [Seleccionar]
private void mostrarMiLista(final LinkedList<Alumno> list) {
       
       // si la lista no esta vacia o tambien if(!(list.size() == 0)) aunque el Sonar(Analizador de codigo estatico) se queja
       if(!list.isEmpty()) {
           //old way
           for(int f=0; f<list.size(); f++) {
               System.out.println(list.get(f).getNombre());
               System.out.println(list.get(f).getApellido());
               System.out.println(list.get(f).getLegajo());
           }

           //old way 2
           for(Alumno tmp : list) {
               System.out.println(tmp.getNombre());
               System.out.println(tmp.getApellido());
               System.out.println(tmp.getLegajo());
           }

           //new way with java-8 foreach mucho más eficiente
           //Que Iterator, una de ellas es menos sobrecarga en la heap
           list.forEach(e -> {
               System.out.println(e.getNombre());
               System.out.println(e.getApellido());
               System.out.println(e.getLegajo());
           });

           //Con metodo por referencia
           list.forEach(System.out::println); // invoca a toString() internamente
           
            //con IntStream donde e, el parametro del foreach equivale al index, por eso al hacer get(e) funciona
            IntStream.range(0,list.size())
                   .forEach(e -> {
                       System.out.println(list.get(e).getNombre());
                       System.out.println(list.get(e).getApellido());
                       System.out.println(list.get(e).getLegajo());
                   });

       } else {
           System.out.println("Lista Vacia");
           JOptionPane.showMessageDialog(null,"Lista vacia.");
       }
}


Potencial toString()

Código (java) [Seleccionar]
@Override
   public String toString() {
       final StringBuilder sb = new StringBuilder("\nAlumno");
       sb.append("\nnombre='").append(nombre).append("\n");
       sb.append(", apellido='").append(apellido).append("\n");
       sb.append(", legajo='").append(legajo).append("\n");
       sb.append("]");
       return sb.toString();
   }


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

Beginner Web

Me gusto el de Potencial toString() porque honestamente no pude hacer andar los metodos anteriores, hay alguna forma de crearlo automaticamente o si o si es manual?  ;-)
7w7

rub'n

#7
Cita de: Beginner Web en  6 Abril 2019, 04:22 AM
Me gusto el de Potencial toString() porque honestamente no pude hacer andar los metodos anteriores, hay alguna forma de crearlo automaticamente o si o si es manual?  ;-)

Que tal chavalina? Cuales métodos anteriores no pudiste hacer andar?

Si puedes generarlos manual, con tu IDE, usas NetBeans? Te puse un ejemplo con imagen en una de tus preguntas
anteriores https://foro.elhacker.net/java/metodo_mostrar_todos_los_atributos_de_un_objeto_por_pantallaresuelto-t494141.0.html donde, oprimes la combinación de teclas ALT+ Insertar, y de ahí, puedes generar el toString()


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen