Foros del Web » Programación para mayores de 30 ;) » Java »

crear clase de arraylist en java

Estas en el tema de crear clase de arraylist en java en el foro de Java en Foros del Web. amigos buenas noches veran me han pedido realizar una clase que realize las funciones basicas de arraylist pero hacerlo sin utilizar arreglos. la verdad no ...
  #1 (permalink)  
Antiguo 12/10/2010, 21:19
 
Fecha de Ingreso: noviembre-2008
Mensajes: 80
Antigüedad: 15 años, 5 meses
Puntos: 1
crear clase de arraylist en java

amigos buenas noches
veran me han pedido realizar una clase que realize las funciones basicas de arraylist pero hacerlo sin utilizar arreglos.
la verdad no se por donde empezar ayuda
como adelanto nos sugirieon utilizar dos clases una clase nodo y la otra que realiza las funciones de arraylist
  #2 (permalink)  
Antiguo 13/10/2010, 05:30
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: crear clase de arraylist en java

Pues eso mismo ... supongo que lo primero que habrás hecho es investigar la api de la clase ArrayList para ver que funciones tiene.

Un ArrayList es un conjunto de objetos accesibles a través de una posición. La clase nodo va a definir la posición de tu objeto, y puede ser tranquilamente un int que defina el nodo.

La clase que va a actuar como ArrayList debe incorporar un conjunto de nodos[] y otro de objetos[] entre sus atributos, teniendo en cuenta que la cantidad de unos y otros debe ser la misma para que sean equivalentes. Y a cada objeto se le asocia un nodo.

Esa es la idea, luego debes desarrollarla...
  #3 (permalink)  
Antiguo 13/10/2010, 06:31
 
Fecha de Ingreso: noviembre-2008
Mensajes: 80
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: crear clase de arraylist en java

Cita:
Iniciado por Fuzzylog Ver Mensaje
Pues eso mismo ... supongo que lo primero que habrás hecho es investigar la api de la clase ArrayList para ver que funciones tiene.

Un ArrayList es un conjunto de objetos accesibles a través de una posición. La clase nodo va a definir la posición de tu objeto, y puede ser tranquilamente un int que defina el nodo.

La clase que va a actuar como ArrayList debe incorporar un conjunto de nodos[] y otro de objetos[] entre sus atributos, teniendo en cuenta que la cantidad de unos y otros debe ser la misma para que sean equivalentes. Y a cada objeto se le asocia un nodo.

Esa es la idea, luego debes desarrollarla...
precisamente asi era la idea que tenia inicial pero el docente me dice que la idea es hacer lo sin utilizar arreglos de ningun tipo, es ahi donde entra mi pregunta si hago eso como se supone que voy aguardar una cantidad indeterminanda de objetos y lo que es mas como hago para acceder a ellos si no los voy a guardar en una arreglo
  #4 (permalink)  
Antiguo 13/10/2010, 08:01
 
Fecha de Ingreso: noviembre-2008
Mensajes: 80
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: crear clase de arraylist en java

EN VERDAD LA PREGUNTA ES TAN DIFICIL O NO ME HECHO ENTENDER?
  #5 (permalink)  
Antiguo 13/10/2010, 08:48
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: crear clase de arraylist en java

Por si te vale de algo aqui tienes las fuentes de ArrayList, a ver si puedes, analizando sus características, lograr emular su funcionamiento.

http://www.docjar.com/html/api/java/...List.java.html

Clase padre abstracta

http://www.docjar.com/html/api/java/...List.java.html

E interfaz

http://www.docjar.com/html/api/java/util/List.java.html

De todos modos la única forma que veo así a botepronto para tener algo equivalente al ArrayList sin utilizar arrays, es que además del objeto que vayas a contener y del nodo tengas un nuevo objeto de la clase que emula el ArrayList.

Así cuando inicialices un objeto de la clase contenedora debes definir

int nodo, objeto tuObjeto // parámetros del constructor
{
this nodo = nodo;
this.objeto = objeto;
if(objeto!=null) {
TuClase newList = new TuClase(nodo+1,null) // --> Esto te sirve para añadir elementos
}
}

Cuando el objeto es null debes obviar el último valor del nodo (como si no existiese)

y para añadir un nuevo objeto al arrayList se debe obtener el ultimo nodo, setear el objeto, y de nuevo crear un objeto de TuCLase con nodo+1 y null de parámetros.

Aún queda muchísimo por pulir sobre lo que te he comentado, sólo es una idea y no está pulida, así que te toca mirar si es viable.

Suerte
  #6 (permalink)  
Antiguo 13/10/2010, 14:10
 
Fecha de Ingreso: noviembre-2008
Mensajes: 80
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: crear clase de arraylist en java

Cita:
Iniciado por Fuzzylog Ver Mensaje
Por si te vale de algo aqui tienes las fuentes de ArrayList, a ver si puedes, analizando sus características, lograr emular su funcionamiento.

http://www.docjar.com/html/api/java/...List.java.html

Clase padre abstracta

http://www.docjar.com/html/api/java/...List.java.html

E interfaz

http://www.docjar.com/html/api/java/util/List.java.html

De todos modos la única forma que veo así a botepronto para tener algo equivalente al ArrayList sin utilizar arrays, es que además del objeto que vayas a contener y del nodo tengas un nuevo objeto de la clase que emula el ArrayList.

Así cuando inicialices un objeto de la clase contenedora debes definir

int nodo, objeto tuObjeto // parámetros del constructor
{
this nodo = nodo;
this.objeto = objeto;
if(objeto!=null) {
TuClase newList = new TuClase(nodo+1,null) // --> Esto te sirve para añadir elementos
}
}

Cuando el objeto es null debes obviar el último valor del nodo (como si no existiese)

y para añadir un nuevo objeto al arrayList se debe obtener el ultimo nodo, setear el objeto, y de nuevo crear un objeto de TuCLase con nodo+1 y null de parámetros.

Aún queda muchísimo por pulir sobre lo que te he comentado, sólo es una idea y no está pulida, así que te toca mirar si es viable.

Suerte
MI PREGUNTA SURGE EN CADA VEZ QUE GUARDO NUEVO OBJETO QUE SUCEDE CON EL ANTERIOR EN DONDE SE GUARDA Y CMO HAGO PARA ACCEDER A EL DESPUES? de antemano agradezco mucho tu interes
  #7 (permalink)  
Antiguo 14/10/2010, 01:04
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: crear clase de arraylist en java

Cada objeto se guardaría dentro del anterior. Para acceder al ultimo objeto tendrias q ir entrando objeto por objeto incrementando el valor del nodo en una unidad, cuando llegues al ultimo nodo te encontrarás con que el objeto asociado sería null, así que debes controlar eso ya que si ejecutas un método contra un objeto null te saltará una NullPointerException.

De todos modos ahora que caigo, lo que estarías haciendo es implementar una lista con una única clase.

El uso de nodos juraría que es algo diferente:

http://www.sourcecodesworld.com/arti...ures/Nodes.asp
Tienes un nodo padre, que sería el ArrayList, una serie de nodos hijo dentro del padre que cada uno contendrá un objeto.

:/
http://www.cs.colorado.edu/~main/edu...odes/Node.java

Supongo que para avanzar, el nodo padre crea un elemento nodo hijo y le asocia el valor de indice 1, para el siguiente elemento vuelve a crear otro y le asocia el valor de indice 2.. etc. Es decir que se empieza con un unico elemento y se deben ir agregando los demás, así no necesitas usar arreglos.

Mira como sería la opción que mejor te convenga.
  #8 (permalink)  
Antiguo 15/10/2010, 10:35
 
Fecha de Ingreso: noviembre-2008
Mensajes: 80
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: crear clase de arraylist en java

Cita:
Iniciado por Fuzzylog Ver Mensaje
Cada objeto se guardaría dentro del anterior. Para acceder al ultimo objeto tendrias q ir entrando objeto por objeto incrementando el valor del nodo en una unidad, cuando llegues al ultimo nodo te encontrarás con que el objeto asociado sería null, así que debes controlar eso ya que si ejecutas un método contra un objeto null te saltará una NullPointerException.

De todos modos ahora que caigo, lo que estarías haciendo es implementar una lista con una única clase.

El uso de nodos juraría que es algo diferente:

http://www.sourcecodesworld.com/arti...ures/Nodes.asp
Tienes un nodo padre, que sería el ArrayList, una serie de nodos hijo dentro del padre que cada uno contendrá un objeto.

:/
http://www.cs.colorado.edu/~main/edu...odes/Node.java

Supongo que para avanzar, el nodo padre crea un elemento nodo hijo y le asocia el valor de indice 1, para el siguiente elemento vuelve a crear otro y le asocia el valor de indice 2.. etc. Es decir que se empieza con un unico elemento y se deben ir agregando los demás, así no necesitas usar arreglos.

Mira como sería la opción que mejor te convenga.
gracias a tu ayuda he podido terminar amigo muchas gracias
dejo el resultado por si ha alguien le sirve

Clase Nodo
Código PHP:
public class Nodo {
    private 
Object dato;
    private 
Nodo siguiente;
    private 
int indice=0;

    public 
Nodo(){
        
siguiente=null;
        
dato=null;
    }
    public 
Nodo(Object dat,Nodo n,int ind){
        
dato=dat;
        
siguiente=n;
        
indice=ind;
    }
    public 
void setSiguienteNodo(Nodo nodo){
        
siguiente=nodo;
    }
    public 
void setDato(Object dat){
        
dato=dat;
    }
    public 
Nodo getSiguienteNodo(){
        return 
siguiente;
    }
    public 
Object getDato(){
        return 
dato;
    }
    public 
void setIndice(int i){
        
indice=i;
    }
    public 
int getIndice(){
        return 
indice;
    }
     public 
String toString(){
        return 
""+dato;
    }

Clase ArrrayList
Código PHP:
public class ArrayList {
    
Nodo cabecera;
    
int indice;
    public 
ArrayList(){
        
cabecera=null;
        
indice=0;
    }

    
//comprobar si cabercera esta vacia
    
private boolean cabeceravacia(){
        return 
cabecera==null;
    }

    
//comprobar si el objeto ya ha sido ingresado
    
private boolean objetoyaingresado(Object obj){
        
boolean objetoya=false;
        
int i=1;
        
Nodo aux cabecera;
      for(
int j=0;j<indice && aux!=null;j++){
            if(!
aux.getDato().equals(obj))
            
i++;
             
aux=aux.getSiguienteNodo();
      }
        if(
i<=indice){
            
objetoya=true;
        }
        else
          
objetoya=false;
        return 
objetoya;
    }

    
//Mostar la Cantidad de elementos ingresados
    
public int tamañoLista(){
        return 
indice;
    }

//METODO PARa INGRESAR OBJETOS
    
public void ingresar(Object dato){
        
//si cabecera es null ingreso el primer objeto
       
        
if(cabeceravacia()){
           
cabecera=new Nodo(dato,cabecera,indice);
           
indice++;
        }
        else{
            if(
objetoyaingresado(dato)==false){
                
Nodo aux=cabecera;
                
//con el while recorro cada nodo verificando cual es ultimo
                
while(aux.getSiguienteNodo()!=null)
                
//una vez estando en el puntero indicado la guardo
                
aux=aux.getSiguienteNodo();
                
//creo un nodo temporal para para ingresr un nuevo objeto y luego guardarlo en la puntero encontrado
                
Nodo aux2=new Nodo(dato,aux.getSiguienteNodo(),indice);
                
aux.setSiguienteNodo(aux2);
                
indice++;
        }
       }
    }

    
//funcion para eliminar ultimo objeto de la lista
     
public Object Eliminaultimobjeto(){
        if(
this.cabeceravacia())
            return 
null;
        if(
cabecera.getSiguienteNodo() == null){
            
Nodo aux2=cabecera;
            
cabeceraaux2.getSiguienteNodo();
            
indice--;
        return 
aux2.getDato();
        }
        
Nodo aux cabecera;
        while(
aux.getSiguienteNodo().getSiguienteNodo()!= null)
            
aux =aux.getSiguienteNodo();
        
Object obj aux.getSiguienteNodo().getDato();
        
aux.setSiguienteNodo(aux.getSiguienteNodo().getSiguienteNodo());
        
indice--;
       
        return 
obj;
    }
   
//Funcion para mostrar los datos ingresados
   
public Object VerLista(int num){
       
Nodo aux=cabecera;
       for(
int i=0;i<num && aux!=null;i++)
           
aux=aux.getSiguienteNodo();
           return 
aux.getDato();
   }

cualquier sugerencia sera bien recibida

Etiquetas: arraylist, clase
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:54.