Tengo una ArrayList que contiene objetos de dirección.
¿Cómo imprimo los valores de este ArrayList, lo que significa que estoy imprimiendo el contenido del Array, en este caso números.
Solo puedo hacer que imprima la dirección de memoria real de la matriz con este código:
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print(houseAddress.get(i));
}
houseAddress
variable y algún código de muestra para los elementos que contiene.Respuestas:
fuente
Arrays.toString(houseAddress.toArray())
toString()
impresión del contenido de sus elementos. Entonces, sololist.toString()
imprime eltoString()
de todos sus elementos. Esto es cierto para todas las colecciones.Agregue un
toString()
método a suaddress
clase y luego hagafuente
houseAddress
como argumentoArrays.toString()
porque no es de tipo Array.Por lo que tengo entendido, está intentando imprimir una ArrayList de matrices y una forma de mostrar eso sería
fuente
dado que no ha proporcionado una implementación personalizada para el
toString()
método, llama al valor predeterminado en el que imprimirá la dirección en la memoria para ese objetoLa solución en su clase de dirección anula el
toString()
método como estepublic class Address { int addressNo ; .... .... ... protected String toString(){ return Integer.toString(addressNo); }
ahora cuando llamas
houseAddress.get(i) in the `System.out.print()` method like this
System.out.print( houseAddress.get(i) )
eltoString()
delAddress
objeto se llamaráfuente
Simplemente puede darlo como:
System.out.println("Address:" +houseAddress);
Tu salida se verá como
[address1, address2, address3]
Esto se debe a que la clase ArrayList o su superclase tendría una función toString () anulada.
Espero que esto ayude.
fuente
Assium que tienes una lista de números como esa
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
si imprime la lista
//method 1 // Conventional way of printing arraylist for (int number : numbers) { System.out.print(number); } //method 2 // Lambda Expression to print arraylist numbers.forEach((Integer value) -> System.out.print(value)); //method 3 // Lambda Expression to print arraylist numbers.forEach(value -> System.out.print(value)); //method 4 // Lambda Expression (method reference) to print arraylist numbers.forEach(System.out::print);
fuente
¿Está diciendo que
ArrayList
está almacenando direcciones de matrices porque eso es lo que está regresando de latoString
llamada, o porque eso es realmente lo que está almacenando?Si tiene una
ArrayList
matriz de (por ejemplo,int[] arr = {1, 2, 3}; houseAddress.add(arr);
Luego, para imprimir los valores de la matriz, debe llamar
Arrays.deepToString
:for (int i = 0; i < houseAddress.size(); i++) { System.out.println(Arrays.deepToString(houseAddress.get(i))); }
fuente
public void printList(ArrayList<Address> list){ for(Address elem : list){ System.out.println(elem+" "); } }
fuente
Desde Java 8 , puede usar el método forEach () desde la interfaz Iterable .
Es un método predeterminado. Como argumento, toma un objeto de clase, que implementa la interfaz funcional Consumer . Puede implementar Consumer localmente de tres formas:
Con clase anónima :
houseAddress.forEach(new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } });
expresión lambda :
o usando la referencia de método :
Esta forma de impresión funciona para todas las implementaciones de interfaz Iterable .
Todos ellos le brindan la forma de definir cómo se imprimirán los elementos, mientras que toString () impone la impresión de la lista en un formato.
fuente
Ponga
houseAddress.get(i)
entre corchetes y llame a la.toString()
función: es decir, consulte a continuaciónfor(int i = 0; i < houseAddress.size(); i++) { System.out.print((houseAddress.get(i)).toString()); }
fuente
No estoy seguro de haber entendido la noción de direcciones (supongo que houseAddress aquí), pero si está buscando una forma de imprimir ArrayList, aquí tiene:
System.out.println(houseAddress.toString().replaceAll("\\[\\]", ""));
fuente
public static void main(String[] args) { List<Moyen> list = new ArrayList<Moyen>(); Moyen m1 = new Moyen(); m1.setCodification("c1"); m1.setCapacityManager("Avinash"); Moyen m2 = new Moyen(); m2.setCodification("c1"); m2.setCapacityManager("Avinash"); Moyen m3 = new Moyen(); m3.setCodification("c1"); m3.setCapacityManager("Avinash"); list.add(m1); list.add(m2); list.add(m3); System.out.println(Arrays.toString(list.toArray())); }
fuente
La forma más sencilla de imprimir una ArrayList es mediante toString
List<String> a=new ArrayList<>(); a.add("111"); a.add("112"); a.add("113"); System.out.println(a.toString());
Salida
[111, 112, 113]
fuente
Puede utilizar un iterador. Es la cosa más simple y menos controvertida que se puede hacer aquí. Say
houseAddress
tiene valores de tipo de datosString
Iterator<String> iterator = houseAddress.iterator(); while (iterator.hasNext()) { out.println(iterator.next()); }
Nota: Incluso puede usar un bucle for mejorado para esto, como mencioné en otra respuesta
fuente
Esto me ayudó:
fuente
si hace que @Override sea pública String toString () como comentarios, obtendrá los mismos resultados que tuvo. Pero si implementa su método toString (), funcionará.
clase pública PrintingComplexArrayList {
public static void main(String[] args) { List houseAddress = new ArrayList(); insertAddress(houseAddress); printMe1(houseAddress); printMe2(houseAddress); } private static void insertAddress(List address) { address.add(new Address(1)); address.add(new Address(2)); address.add(new Address(3)); address.add(new Address(4)); } private static void printMe1(List address) { for (int i=0; i<address.size(); i++) System.out.println(address.get(i)); } private static void printMe2(List address) { System.out.println(address); }
}
dirección de clase {dirección privada int; Dirección pública (int i) {addr = i; }
@Override public String toString() { Integer iAddr = new Integer (addr); return iAddr.toString(); }
}
fuente
Incluso puede usar un bucle for mejorado o un iterador como:
for (String name : houseAddress) { System.out.println(name); }
Puede cambiarlo a cualquier tipo de datos
houseAddress
y evita conversiones innecesariasfuente
JSON
Una solución alternativa podría convertir su lista en formato JSON e imprimir el Json-String. La ventaja es un Object-String bien formateado y legible sin la necesidad de implementar el
toString()
. Además, funciona para cualquier otroObject
oCollection
sobre la marcha.Ejemplo usando Gson de Google :
import com.google.gson.Gson; import com.google.gson.GsonBuilder; ... public static void printJsonString(Object o) { GsonBuilder gsonBuilder = new GsonBuilder(); /* * Some options for GsonBuilder like setting dateformat or pretty printing */ Gson gson = gsonBuilder.create(); String json= gson.toJson(o); System.out.println(json); }
fuente
Asegúrese de tener un captador en la clase de dirección de la casa y luego use:
for(int i = 0; i < houseAddress.size(); i++) { System.out.print(houseAddress.get(i)**.getAddress()**); }
fuente
puede usar el formato de impresión si solo desea imprimir el elemento en la consola.
for(int i = 0; i < houseAddress.size(); i++) { System.out.printf("%s", houseAddress.get(i)); }
fuente
Suponiendo que
houseAddress.get(i)
es unArrayList
, puede agregartoString()
después deArrayList
:for(int i = 0; i < houseAddress.size(); i++) { System.out.print(houseAddress.get(i).toString()); }
Un ejemplo general:
ArrayList<Double> a = new ArrayList(); a.add(2.); a.add(32.); System.out.println(a.toString()); // output // [2.0, 32.0]
fuente
Este es un código simple para agregar el valor en ArrayList e imprimir el valor de ArrayList
public class Samim { public static void main(String args[]) { // Declare list List<String> list = new ArrayList<>(); // Add value in list list.add("First Value ArrayPosition=0"); list.add("Second Value ArrayPosition=1"); list.add("Third Value ArrayPosition=2"); list.add("Fourth Value ArrayPosition=3"); list.add("Fifth Value ArrayPosition=4"); list.add("Sixth Value ArrayPosition=5"); list.add("Seventh Value ArrayPosition=6"); String[] objects1 = list.toArray(new String[0]); // Print Position Value System.err.println(objects1[2]); // Print All Value for (String val : objects1) { System.out.println(val); } } }
fuente