Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/04/2015, 10:49
Avatar de maiksix
maiksix
 
Fecha de Ingreso: noviembre-2014
Ubicación: Sabadell
Mensajes: 124
Antigüedad: 10 años
Puntos: 1
ArrayList dentro de ArrayList

Hola a todos,

sigo con un proyecto y estoy en un punto donde no se exactamente como decirle al programa que haga la estructura que yo quiero...

Primero de todo tengo un main donde llamo una clase en la que leo los ficheros txt que necesito para hacer los cálculos. Como ya me indicasteis en otros hilos guarde esos datos en ArrayList para conseguir evitar dobles lecturas etc...

Ahora a parte de estas clases, tengo una llamada "Solucion", otra llamada "Ruta" y otra llamada "Leg".

La Class Leg tiene el siguiente código

Código:
public class Leg {

	 private String Departure=null;
	 private String Arrival=null;
	 private float xOrigen=0.0f;
	 private float yOrigen=0.0f;
	 private int id_avion;
	 private double hora;
	 

	 
	 //DUMMY SOLUTION CALCULATION
	 
	 public Leg(String departure ,float xOrigen, float yOrigen , int id_avion, double hora)
	 {   
	     this.Departure=departure;
	     this.id_avion=id_avion;
	     this.xOrigen=xOrigen;
	     this.yOrigen=yOrigen;
	     this.hora=hora;
	 }
	 /* GET METHODS */
	 public String getDeparture(){return Departure;}
	 public String getArrival(){return Arrival;}
	 public float getxOrigen(){return xOrigen;}
	 public float getyOrigen(){return yOrigen;}
	 public int getIdAvion(){return id_avion;}
	 public double gethora(){return hora;}
	 
	 /*SET METHODS*/

	 public void SetId(int id_avion){this.id_avion=id_avion;}
}
En la clase ruta quiero hacer un arraylist de Leg, y en solución un ArrayList de Ruta.

Para eso he hecho lo siguiente en la clase Ruta:

Código:
import java.util.ArrayList;


public class Route {
	int id_ruta=0;
	int cost_total=0;
	float hora_inici=0.0f;
	float hora_final=0.0f;
	ArrayList<Leg> Ruta=new ArrayList <Leg>(); 

	//---------------------------------------------------->CREA UNA RUTA DE LEGS<------------------------------------------------
	public static void Lista (int u, ArrayList Aeropuertos, int [][] matriz,int [][] matriz_departure, int [][] matriz_arrival){
	 float xOrigen=0.0f;float yOrigen=0.0f; float xDestino=0.0f; float yDestino=0.0f; float hsalida=0.0f; float hllegada=0.0f;
     int id_avion=-1;
     int k=0;
    /* int l=0;
     while(l<Aeropuertos.size()){
		System.out.println(Aeropuertos.get(l).getname() +" :)");
   	 }*/
     for(int a=0; a<u; a++){ //this loop saves the new coordinates.    	  
   	  for(int b=0; b<u; b++){
 			 if(matriz[a][b]!=0){
 				 
 				 //Salida
 				 	String nameOrigin=Aeropuertos.get(a).getname();
 		      		xOrigen=Aeropuertos.get(a).getX();
 		      		yOrigen=Aeropuertos.get(a).getY();
 		      		hsalida=matriz_departure[a][b];
 		      		
 		      	//Llegada
 		      	String nameDestino=Aeropuertos.get(b).getname();
 		      	xDestino=Aeropuertos.get(b).getX();
		      	yDestino=Aeropuertos.get(b).getY();
 		      	hllegada=matriz_arrival[a][b];
 		      	
 		      		//matriz[a][b]=(int)calcularDistancia(xOrigen, yOrigen, xDestino, yDestino);
 		      	
 	    		  //System.out.println(" xO: "+xOrigen+" yO: "+yOrigen+" xD: "+xDestino+" xD: "+yDestino+" O: "+nameOrigin+" D: "+nameDestiny+" Distancia: "+ matriz[a][b]);
 		      		Ruta.add(new Leg(nameOrigin, xOrigen, yOrigen, id_avion, hsalida));
 		      		Ruta.add(new Leg(nameDestino, xDestino, yDestino, id_avion,hllegada));
 		      		k++;
 		     } 
 		   }//for
 	  }//for
	}
}
Llegado a este punto tengo varios problemas.
El primero es que no me reconoce aeropuertos. Lo que pretendo es pasar el ArrayList aeropuertos que tengo en otra clase como parametro y supongo que no lo hago bien y no lo detecta.

El otro problema es que creo que hasta aquí sigo la estructura que quiero plasmar, pero ahora que tengo que hacer el ArrayList de Rutas en la clase Solution no se como tirar hacia adelante.

Mas que nada es que ahora mismo en la clase en la que leo los ficheros llamo el método Lista de la clase Ruta, le paso los parámetros que necesito para hacer los calculos y luego espero poner ese arrayList calculado en la clase ruta dentro de la clase Solucion. Pero me intuyo que debe ser al revés, es decir, en la clase de lectura tengo que llamar a la clase solución, añadir un nodo iniciarlo y llamar a la clase Ruta para poner el ArrayList de Leg dentro de Solucion.

Creéis que es correcto como lo estoy haciendo, alguna idea?

A ver si alguien puede echarme una mano!
Muchas gracias :)

Un saludo
__________________
Going hard for too long... Can't get enough