elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [JAVA]duda code
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [JAVA]duda code  (Leído 4,400 veces)
Pirat3net

Desconectado Desconectado

Mensajes: 270


Ver Perfil
[JAVA]duda code
« en: 8 Junio 2011, 17:24 pm »

package lista;

import java.util.Iterator;
import java.util.LinkedList;

public class EjemploLista <T> {
   private class Nodo {
      public Nodo siguiente;

      public T    elemento;

      public Nodo(T elemento, Nodo siguiente) {
         this.siguiente = siguiente;
          this.elemento = elemento;
      }

   }
   
    private Nodo primero;

    public EjemploLista() {
        primero = null;
   }

   
   public boolean equals (Object derecho){
      if (!(derecho instanceof LinkedList<?>)) {
         return false;
      } else {
         Iterator<?> elemento = ((LinkedList<?>)derecho).iterator();
         Nodo actual = primero;
         while (actual!=null && elemento.hasNext()){
            if (!(actual.elemento).equals (elemento.next())) {
               return false;
            }
            actual = actual.siguiente;
         }
         return actual==null && !elemento.hasNext();
      }
   }
   
    public void add (T elemento) {
        if (primero == null) {
            primero = new Nodo (elemento, null);
        } else {
           Nodo actual = primero;
           while (actual.siguiente != null) {
              actual = actual.siguiente;
           }
            actual.siguiente = new Nodo (elemento, null);
        }
    }

    public String toString (){
       String str= "";
       Nodo actual = primero;
       while (actual != null) {
          str=str+'['+actual.elemento.toString()+']';
          actual = actual.siguiente;
       }
       return str;
    }

}

la duda es que no me queda nada claro el decirle a un atributo que va a ser de la clase que lo contiene. me suena a decir como si un perro fuese un perro y a demas sus patas tambien se llamasen perro. no se si me explico, no veo como no se crea error y no veo la utilidad, estoy empezando a analizar este code, si alguien me resuelve esa duda o que me oriente como se llama ese recurso para buscar info.
otra duda rapida, que se indica cuando se pasa como parametro <?>  ????
gracias


En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: [JAVA]duda code
« Respuesta #1 en: 8 Junio 2011, 20:28 pm »

En primer lugar, esto deberías haberlo colocado en la sección de Java. En segundo lugar podrías haber posteado usando la etiqueta de código de javascript por ejemplo y se queda mucho más bonito, y no en rojo que la verdad molesta un poco a la vista xD.

Por otro lado no entiendo muy bien a que te refieres con la primera pregunta que haces. Si te explicas un poco mejor intentaré responderte. Si te refieres a declarar el atributo de tipo nodo, lo que estás haciendo en esta clase es declarar otra clase y hacer uso de ella como un atributo, si mal no recuerdo esto se llama clases embebidas, pero no me hagas mucho caso. La clase que estás construyendo es una clase genérica, dentro declaras otra clase de tipo nodo y por último incluyes en la clase genérica un atributo de la clase nodo.

<?> Que me corrija alguien que sepa más si estoy equivocado, pero creo que a secas no se usa de forma correcta.

Te cito unos apuntes que tengo:

Citar
Código
  1. public double posicionGlobal(List<? extends Deposito> depositos)

Se utiliza un comodín, que significa: permite cualquier lista genérica parametrizada a la clase Depósito o a un tipo compatible (subclase). Si pasamos como parámetro un objeto List<DepositoEstructurado>, éste será el tipo reconocido dentro del método. El tipo comodín se puede usar para declarar variables locales o atributos. No se puede utilizar el tipo comodín para construir objetos.

Espero haberte ayudado en algo con esto.


En línea

Pirat3net

Desconectado Desconectado

Mensajes: 270


Ver Perfil
Re: [JAVA]duda code
« Respuesta #2 en: 9 Junio 2011, 21:31 pm »

tienes razon, no me di cuenta que no estaba en java, perdon, no sabia que existia el poner el code para que detectase automatico las variables etc... bueno , me referia a lo que has respondido pero creo que no lo has detectado bien.

existe una clase principal que es lista, despues se crea la clase Nodo dentro de ella, y dentro de la clase Nodo se crea el atributo Nodo. buscare por las referencias de clases embebidas que me has dado a ver si hay suerte.
En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: [JAVA]duda code
« Respuesta #3 en: 10 Junio 2011, 16:10 pm »

Ah! vale, ya te entiendo. Te parece raro declarar un atributo en una clase del mismo tipo que la clase. Pues eso es bastante útil para representar estructuras de datos enlazadas.

En el ejemplo que tu pones, la clase nodo tiene dos atributos, uno es el elemento que guardará (
Código
  1. public T elemento
que es del tipo que se especifique a la hora de crear la lista, y por otro lado otro nodo que apuntará al siguiente elemento de dicha lista.

Si te imaginas esto como celdas (casillas, o como quieras llamarlo) tu tendrás una casilla donde tienes guardado el elemento, y además, tienes una flecha que te dice donde está el siguiente elemento de la lista, que, evidentemente, será otra casilla.

Espero haberme explicado más o menos bien.

Mira, te dejo esta imagen a ver si consigues aclararte un poco.



Saludos.
En línea

Fenyxer

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [JAVA]duda code
« Respuesta #4 en: 10 Junio 2011, 19:48 pm »

existe una clase principal que es lista, despues se crea la clase Nodo dentro de ella, y dentro de la clase Nodo se crea el atributo Nodo.

Eso es porque en Java realmente estas guardando el puntero de memoria del objeto no el objeto en si. En vez de tener un nodo dentro de un nodo, lo que tienes es la direccion de la memoria donde se aloja un nodo dentro de tu nodo. No se si me explico bien.

Asi que realmente lo que guardas es una direccion de memoria, en Java y lenguajes de este tipo suele pasar esto.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda de code
Programación Visual Basic
CrashIIX 4 1,840 Último mensaje 8 Enero 2007, 18:16 pm
por <?BRoWLi?>
Java code help
Java
Genocider 2 2,278 Último mensaje 30 Julio 2007, 21:29 pm
por Ragnarok
Duda Code troyano C
Programación C/C++
Garfield07 0 2,197 Último mensaje 16 Agosto 2010, 15:14 pm
por Garfield07
Java Code Conventions
Java
Gallu 2 3,549 Último mensaje 22 Agosto 2011, 21:03 pm
por Gallu
Create c # background code or pass it from java
.NET (C#, VB.NET, ASP)
Deadbeat12 2 2,843 Último mensaje 27 Noviembre 2021, 23:05 pm
por Deadbeat12
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines