Contenedores anidados. (Arraylist)

Iniciado por cunian, 18 Mayo 2017, 03:51 AM

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

cunian

buenas noches, ayer mi profesor de programación orientada a objetos nos dejo un proyecto, el cual tengo que realizar con contenedores anidados, Estuve buscando en google y no encuentro nada relacionado con el tema. Alguien me puede sacar de la duda a que se refiere el profesor cuando dice contenedores anidados. Estamos trabajando con contenedores(Arraylist) pero no se como anidar esta estructura.

gracias.

3n31ch

#1
¿Contenedores? Lo mas cercando seria la clase Container de awt o los Wrappes ... pero si dices que es un array list, ok.  :xD (que extraña forma de decirles).

Quizas se refiera a hacer un arrayList de arrayList o algo asi  ;D

Código (java) [Seleccionar]

        ArrayList<ArrayList> containerContainer = new ArrayList<>();

       ArrayList<Integer> ai = new ArrayList<>();
       ai.add(2);
       ai.add(3);
       ai.add(4);
       ai.add(5);
       
       containerContainer.add(ai);

       for(ArrayList<Integer> arr : containerContainer) {
           for(Integer i : arr) {
               System.out.println(i);
           }
       }





Sera eso?

Esto de inventar nombres  :xD :xD

cunian

la verdad no estoy seguro, muy interesante lo que me acaba de mostrar. No sabia que se podía crear un Arraylist de tipo Arraylist y dentro de ellos tener mas listas. Aunque acostumbro a trabajar con LinkedList.

3n31ch

Cita de: cunian en 18 Mayo 2017, 04:50 AM
la verdad no estoy seguro, muy interesante lo que me acaba de mostrar. No sabia que se podía crear un Arraylist de tipo Arraylist y dentro de ellos tener mas listas. Aunque acostumbro a trabajar con LinkedList.

Seria lo mismo
Código (java) [Seleccionar]

LinkedList<LinkedList> containerContainer = new LinkedList<>();
        LinkedList<Integer> ai = new LinkedList<>();
        ai.add(2);
        ai.add(3);
        ai.add(4);
        ai.add(5);
        containerContainer.add(ai);
        System.out.println(containerContainer);


de hecho la salida es:
[[2, 3, 4, 5]]

Ni modo, con lo que me dices es lo unico que se me ocurre

cunian

Hola, mi profesor dijo que el anidamiento lo hiciera de la siguiente manera.

que cuando le diera los atributos a la Abstracción del objeto, dentro de esos atributos ira un contenedor(Arraylist). Y creara una lista(Contenedor) que guardar ese objeto. asi el objeto que se guarda en un Arraylist llevara otro Arraylist dentro de el. Por ejemplo.

Creo la clase con sus respectivos atributos, y uno de esos atributos es un lista de tipo LinkedLis.

Código (java) [Seleccionar]

import java.util.Date;
import java.util.LinkedList;



public class Abs_departamentos {
    private String nombre;
    private long codigo;
    private Abs_empleados emple;
    private Date fecha_dirige;
    public LinkedList<Abs_proyectos> listaproyecto = new LinkedList<>();

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public long getCodigo() {
        return codigo;
    }

    public void setCodigo(long codigo) {
        this.codigo = codigo;
    }

    public Abs_empleados getEmple() {
        return emple;
    }

    public void setEmple(Abs_empleados emple) {
        this.emple = emple;
    }

    public Date getFecha_dirige() {
        return fecha_dirige;
    }

    public void setFecha_dirige(Date fecha_dirige) {
        this.fecha_dirige = fecha_dirige;
    }

    public LinkedList<Abs_proyectos> getListaproyecto() {
        return listaproyecto;
    }

    public void setListaproyecto(LinkedList<Abs_proyectos> listaproyecto) {
        this.listaproyecto = listaproyecto;
    }

    public Abs_departamentos(String nombre, long codigo, Abs_empleados emple, Date fecha_dirige, LinkedList listaproyecto) {
        this.nombre = nombre;
        this.codigo = codigo;
        this.emple = emple;
        this.fecha_dirige = fecha_dirige;
        this.listaproyecto = listaproyecto;
    }
   
}



creo una lista que va guardar departamentos y dentro de los objetos que se guardaran en esta lista llevara, otro linkedlist dentro de ella.
de esta forma se anidan dos contenedores.

Código (java) [Seleccionar]

public static LinkedList<Abs_departamentos> lista_departamentos = new LinkedList<>();

    public static void agregar_departamento(Abs_departamentos x) {
        lista_departamentos.add(x);
    }





3n31ch

Ya, lo entiendo. Es un anidado "no directo". De igual forma no estábamos tan desviados.

Supongo que ya tienes solución a tu problema, así que no comentare mas al respecto. Pero ten ojo con la forma que escribes tu código.

Pasate por aquí: https://foro.elhacker.net/java/aporte_buenas_practicas_y_convenciones_en_java_parte_uno_convenciones-t428844.0.html

Acá detallo las convenciones de Java, que aunque parece una estupidez... con solo este pequeño cambio, tu código parecerá mucho mas profesional.

Saludos, y suerte con tu código!

marvin49

si estás en ingeniería podría ser que en poo se apoyen en la asignatura de estrategias, hay se estudian más cosas sobre almacenamiento de datos.


Enviado desde mi iPhone utilizando Tapatalk