2009-04-17 40 views
15

Supongo que tengo una clase de coche con los atributos make y registration, y creo una lista de matrices para almacenarlos. ¿Cómo se muestran todos los elementos en ArrayList?¿Cómo mostrar todos los elementos en una lista de arrays?

tengo este código en este momento:

public Car getAll() 
{ 
    for(int i = 0; i < cars.size(); i++) //cars name of arraylist 
    { 
     Car car = cars.get(i); 
     { 
      return cars.get (i); 
     } 
    } 
    return null; 
} 

Se compila bien, pero cuando lo intento en mi clase probador utilizando este código:

private static void getAll(Car c1) 
{ 
    ArrayList <Car> cars = c1.getAll(); // error incompatible type 
    for(Car item : cars) 
    { 
     System.out.println(item.getMake() 
       + " " 
       + item.getReg() 
       ); 
    } 
} 

estoy recibiendo un error de tipo incompatibles . ¿Mi codificación es correcta? Si no, ¿alguien puede mostrarme cómo debería ser?

Gracias

Respuesta

2

Su método getAll() no consigue todo. Devuelve el primer auto.

La instrucción return finaliza el ciclo.

2

Recibirá un error porque su función getAll en la clase Car devuelve un solo automóvil y desea asignarlo a una matriz.

Realmente no está claro y es posible que desee publicar más código. ¿Por qué pasas un solo coche a la función? ¿Cuál es el significado de llamar a getAll en un automóvil?

10

¿Estás tratando de hacer algo como esto?

public List<Car> getAll() { 
    return new ArrayList<Car>(cars); 
} 

Y entonces llamándolo:

List<Car> cars = c1.getAll(); 
for (Car item : cars) { 
    System.out.println(item.getMake() + " " + item.getReg()); 
} 
+1

Creo que estás en lo cierto, excepto si tiene una lista coches, entonces ¿por qué devolver una nueva lista que contiene sus elementos en lugar de simplemente devolver la lista original: devolver autos; – nsayer

+2

Mejor aún, podría devolver Collections.unmodifiableList (cars), lo que protegería a la lista de ser modificada por los usuarios de la clase. – nsayer

+0

Usted señor es una leyenda. ¡Funciona! Pasé 2 horas intentando hacer esto y lo hiciste en 2 minutos. ¡Muchísimas gracias! :) –

2

No está del todo claro lo que estás haciendo. Su función getAll() debería devolver una lista <Auto>, no un automóvil. De lo contrario, ¿por qué llamarlo getAll?

Si tiene

Car[] arrayOfCars 

y desea una lista, sólo tiene que hacer esto:

List<Car> listOfCars = Arrays.asList(arrayOfCars); 

matrices está documentado Here.

1

Hola lo siento el código para el segundo debe ser:

vacío getAll (c1 carlista) privada estática {

ArrayList <Car> cars = c1.getAll(); // error incompatible type 
for(Car item : cars) 
{ 
     System.out.println(item.getMake() 
         + " " 
         + item.getReg() 
         ); 
} 

}

tengo una llamada carlista clase que contiene el arraylist y su método, así que en la clase de prueba, tengo básicamente este código para usar esa clase CarList:

CarList c1; c1 = new CarList();

todo lo demás funciona, como agregar y quitar automóviles y mostrar un automóvil individual, solo necesito un código para mostrar todos los automóviles en la lista de arrays.

+0

getAll() debería devolver una lista , no un automóvil. Y no debe recorrer la lista de autos, sino simplemente devolver la lista como un todo. – nsayer

+0

Muchas gracias, no lo sé. –

+0

¿Por qué utilizar CarList en lugar de List ? ¿Hace algo más de lo que sugiere su nombre? –

2

tangenciales: String.Format() rocas:

public String toString() { 
    return String.format("%s %s", getMake(), getReg()); 
} 

private static void printAll() { 
    for (Car car: cars) 
     System.out.println(car); // invokes Car.toString() 
} 
2

Otro enfoque consiste en añadir un método toString() a su clase Car y dejar que el método de ArrayList toString() haga todo el trabajo.

@Override 
public String toString() 
{ 
    return "Car{" + 
      "make=" + make + 
      ", registration='" + registration + '\'' + 
      '}'; 
} 

No te dan un coche por línea en la salida, pero es rápido y fácil si lo que desea es ver lo que está en la matriz.

List<Car> cars = c1.getAll(); 
System.out.println(cars); 

salida sería algo como esto:

[Car{make=FORD, registration='ABC 123'}, 
Car{make=TOYOTA, registration='ZYZ 999'}] 
-1

Puede utilizar arraylistname.clone()

+0

Agrega más información a tu post. No solo unas pocas palabras. – SteveFest

Cuestiones relacionadas