• Martes 30 de Abril de 2024, 02:39

Autor Tema:  Crear un objeto de clase en el nodo de una lista enlazada  (Leído 1748 veces)

langdom13

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Crear un objeto de clase en el nodo de una lista enlazada
« en: Miércoles 12 de Agosto de 2009, 11:18 »
0
Hola a todos,

Estoy utilizando una lista enlazada, y ahora quiero insertar un objeto de clase dentro del objeto nodo. Es decir:

 Tengo esta clase estatica:

public class Prueba{

    public static class PuertoComercial{
      
      private String idPuerto;
      private String puerto;
      private List<PuertoComercial> Lpuertos;
      private float distancia;
      
      public PuertoComercial() {
         super();
         this.Lpuertos = new ArrayList<PuertoComercial>();
         // TODO Auto-generated constructor stub
      }

      public PuertoComercial(String idPuerto, String puerto, float distancia) {
         super();
         this.idPuerto = idPuerto;
         this.puerto = puerto;
         this.distancia = distancia;
         this.Lpuertos = new ArrayList<PuertoComercial>();
      }
    }

    public static class nodo {
   
      private Object elemento;
      private nodo sig;

            
      public nodo(Object x) {
         elemento = x;
         sig = null;
      }

      public  nodo(Object x, nodo n){
          elemento = x;
          sig = n;
      }
     }
}
      public static void main(String[] args){
      
      ListaS lista = new ListaS();
      PuertoComercial p1= new PuertoComercial("1111", "MONTREAL", (float)124.4);
      lista.insertarlista(new nodo(p1));
      //lista.insertarlista(new nodo("NEW YORK"));
      
      System.out.println("Lista enlazada: ");
      System.out.println(lista.recorrer());
      
   }

Me da el siguiente error: ¿Porqué?


Exception in thread "main" java.lang.NullPointerException
   at busqueda.Estado$nodo.access$1(Estado.java:81)
   at busqueda.Estado$ListaS.insertarlista(Estado.java:120)
   at busqueda.Estado.main(Estado.java:197)



Gracias por adelantado.

gophlb

  • Visitante
Re: Crear un objeto de clase en el nodo de una lista enlazada
« Respuesta #1 en: Miércoles 12 de Agosto de 2009, 11:59 »
0
si miras la traza de error, donde te esta saltando el nullpointer es en una clase que se llama Estado, concretamente en el main en la linea 197, que llama probablemente a insertarLista en la linea 120, que llama a algo en la linea 81, que es donde definitivamente casca y te da el nullpointer.

al menos, eso es lo que creo ;)

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Crear un objeto de clase en el nodo de una lista enlazada
« Respuesta #2 en: Jueves 13 de Agosto de 2009, 10:14 »
0
Buenas...

Ni la clase PuertoComercial ni la clase Nodo deberían ser declaradas static.

Si pones el código de ListaS podríamos ayudarte, así no podemos mirar cuál es el error.


Un saludo.

langdom13

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Crear un objeto de clase en el nodo de una lista enlazada
« Respuesta #3 en: Jueves 13 de Agosto de 2009, 13:00 »
0
Hola a todos,
os muestro el código que he usado, olvidar lo anterior, ahora he usado un LinkedHashMap.
Lo que quiero es unir los puertos como si fuesen lineas de metro, es decir, que cada puerto pueda tener una lista de puertos. Para poder acceder a otras rutas. ¿Qué se os ocurre?

package busqueda;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;

import busqueda.Estado.PuertoComercial;

public class ListaEnlazada {

   public static class PuertoComercial{
      
      private String idPuerto;
      private String puerto;
      private List<PuertoComercial> Lpuertos;
      private float distancia;
      
      public PuertoComercial() {
         super();
         this.Lpuertos = new ArrayList<PuertoComercial>();
         // TODO Auto-generated constructor stub
      }

      public PuertoComercial(String idPuerto, String puerto, float distancia) {
         super();
         this.idPuerto = idPuerto;
         this.puerto = puerto;
         this.distancia = distancia;
         this.Lpuertos = new ArrayList<PuertoComercial>();
      }

      public String getIdPuerto() {
         return idPuerto;
      }

      public void setIdPuerto(String idPuerto) {
         this.idPuerto = idPuerto;
      }

      public String getPuerto() {
         return puerto;
      }

      public void setPuerto(String puerto) {
         this.puerto = puerto;
      }

      public List<PuertoComercial> getLpuertos() {
         return Lpuertos;
      }

      public void setLpuertos(List<PuertoComercial> lpuertos) {
         Lpuertos = lpuertos;
      }

      public float getDistancia() {
         return distancia;
      }

      public void setDistancia(float distancia) {
         this.distancia = distancia;
      }
      
   }


   public static void main(String[] args) {

      LinkedHashMap rutaComercial = new LinkedHashMap();
      rutaComercial.put("1", new PuertoComercial("PHHHH", "MONTREAL", (float)123.6));      
      rutaComercial.put("2", new PuertoComercial("PDDDD", "NEW YORK", (float)26.6));
      rutaComercial.put("3", new PuertoComercial("PEEEE", "CHARLESTON", (float)26.6));
      rutaComercial.put("4", new PuertoComercial("PCCCC", "MIAMI", (float)123.6));      
      rutaComercial.put("5", new PuertoComercial("PBBBB", "LA HABANA", (float)26.6));
      rutaComercial.put("6", new PuertoComercial("PFFFF", "HOUSTON", (float)26.6));
      rutaComercial.put("7", new PuertoComercial("P9999", "VERACRUZ", (float)26.6));
      rutaComercial.put("8", new PuertoComercial("P7777", "CRISTOBAL", (float)26.6));
      rutaComercial.put("9", new PuertoComercial("P3333", "BARRANQUILLA", (float)26.6));
      
            
      PuertoComercial obj= (PuertoComercial) rutaComercial.get("4");
      System.out.println(obj.getPuerto());
   }


}