Autor
|
Tema: [JAVA]duda code (Leído 4,418 veces)
|
Pirat3net
Desconectado
Mensajes: 270
|
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
Mensajes: 646
Divide y vencerás
|
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: 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
Mensajes: 270
|
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
Mensajes: 646
Divide y vencerás
|
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á ( 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
Mensajes: 1
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda de code
Programación Visual Basic
|
CrashIIX
|
4
|
1,859
|
8 Enero 2007, 18:16 pm
por <?BRoWLi?>
|
|
|
Java code help
Java
|
Genocider
|
2
|
2,284
|
30 Julio 2007, 21:29 pm
por Ragnarok
|
|
|
Duda Code troyano C
Programación C/C++
|
Garfield07
|
0
|
2,203
|
16 Agosto 2010, 15:14 pm
por Garfield07
|
|
|
Java Code Conventions
Java
|
Gallu
|
2
|
3,556
|
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,856
|
27 Noviembre 2021, 23:05 pm
por Deadbeat12
|
|