Mam ArrayList, który zawiera obiekty Address.
Jak wydrukować wartości tej ArrayList, co oznacza, że drukuję zawartość tablicy, w tym przypadku liczby.
Mogę tylko wydrukować rzeczywisty adres pamięci tablicy za pomocą tego kodu:
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print(houseAddress.get(i));
}
houseAddress
zmiennej i przykładowy kod elementów, które zawiera.Odpowiedzi:
list.toString () jest wystarczająco dobra.
Interfejs List nie definiuje kontraktu dla toString (), ale klasa bazowa AbstractCollection zapewnia użyteczną implementację dziedziczoną przez ArrayList.
źródło
Arrays.toString(houseAddress.toArray())
toString()
aby wydrukować zawartość swoich elementów. Więc po prostulist.toString()
drukujetoString()
wszystkie jego elementy. Dotyczy to wszystkich kolekcji.Dodaj
toString()
metodę do swojejaddress
klasy, a następnie zróbźródło
houseAddress
argumentu for,Arrays.toString()
ponieważ nie jest to typ Array.Z tego, co rozumiem, próbujesz wydrukować ArrayList z tablicami i jednym ze sposobów wyświetlenia tego byłoby
źródło
ponieważ nie dostarczyłeś niestandardowej implementacji
toString()
metody, wywołuje ona domyślną, na której ma zostać wydrukowany adres w pamięci dla tego obiekturozwiązanie w klasie Address przesłania taką
toString()
metodępublic class Address { int addressNo ; .... .... ... protected String toString(){ return Integer.toString(addressNo); }
teraz, kiedy dzwonisz
houseAddress.get(i) in the `System.out.print()` method like this
System.out.print( houseAddress.get(i) )
toString()
zAddress
obiektu zostanie wywołanaźródło
Możesz to po prostu podać jako:
System.out.println("Address:" +houseAddress);
Twój wynik będzie wyglądał
[address1, address2, address3]
Dzieje się tak, ponieważ klasa ArrayList lub jej nadklasa miałaby nadpisaną funkcję toString ().
Mam nadzieję że to pomoże.
źródło
Załóżmy, że masz taką listę numerów
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
jeśli wydrukujesz listę
//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);
źródło
Czy mówisz, że
ArrayList
przechowuje adresy tablic, ponieważ to jest to, co wraca ztoString
połączenia, czy też dlatego, że tak naprawdę przechowujesz?Jeśli masz
ArrayList
tablice (npint[] arr = {1, 2, 3}; houseAddress.add(arr);
Następnie, aby wydrukować wartości tablicy, które musisz wywołać
Arrays.deepToString
:for (int i = 0; i < houseAddress.size(); i++) { System.out.println(Arrays.deepToString(houseAddress.get(i))); }
źródło
public void printList(ArrayList<Address> list){ for(Address elem : list){ System.out.println(elem+" "); } }
źródło
Ponieważ Java 8 , można użyć foreach () metody z iterable interfejsu.
To metoda domyślna. Jako argument przyjmuje obiekt klasy, który implementuje funkcjonalny interfejs Konsument . Możesz zaimplementować Consumer lokalnie na trzy sposoby:
Z klasą anonimową :
houseAddress.forEach(new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } });
wyrażenie lambda :
lub przy użyciu odniesienia do metody :
Ten sposób drukowania działa dla wszystkich implementacji interfejsu Iterable .
Wszystkie dają możliwość zdefiniowania sposobu drukowania elementów, podczas gdy toString () wymusza drukowanie listy w jednym formacie.
źródło
Umieść
houseAddress.get(i)
w nawiasach i wywołaj.toString()
funkcję: tj. Patrz poniżejfor(int i = 0; i < houseAddress.size(); i++) { System.out.print((houseAddress.get(i)).toString()); }
źródło
Nie jestem pewien, czy zrozumiałem pojęcie adresów (zakładam tutaj houseAddress), ale jeśli szukasz sposobu na wydrukowanie ArrayList, proszę:
System.out.println(houseAddress.toString().replaceAll("\\[\\]", ""));
źródło
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())); }
źródło
Najprostszym sposobem wydrukowania ArrayList jest użycie toString
List<String> a=new ArrayList<>(); a.add("111"); a.add("112"); a.add("113"); System.out.println(a.toString());
Wynik
[111, 112, 113]
źródło
Możesz użyć Iteratora. Jest to tutaj najprostsza i najmniej kontrowersyjna rzecz. Say
houseAddress
ma wartości typu danychString
Iterator<String> iterator = houseAddress.iterator(); while (iterator.hasNext()) { out.println(iterator.next()); }
Uwaga: Możesz nawet użyć do tego ulepszonej pętli for, jak wspomniałem w innej odpowiedzi
źródło
Pomogło mi to:
źródło
jeśli ustawisz @Override public String toString () jako komentarze, uzyskasz takie same wyniki, jak zrobiłeś. Ale jeśli zaimplementujesz metodę toString (), zadziała.
public class 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); }
}
klasa Adres {prywatny adres int; adres publiczny (int i) {addr = i; }
@Override public String toString() { Integer iAddr = new Integer (addr); return iAddr.toString(); }
}
źródło
Możesz nawet użyć ulepszonej pętli for lub iteratora, takiego jak:
for (String name : houseAddress) { System.out.println(name); }
Możesz go zmienić na dowolny typ danych,
houseAddress
aby uniknąć niepotrzebnych konwersjiźródło
JSON
Alternatywnym rozwiązaniem może być przekonwertowanie listy do formatu JSON i wydrukowanie ciągu Json. Zaletą jest dobrze sformatowany i czytelny ciąg znaków bez konieczności implementacji
toString()
. Dodatkowo działa z każdym innymObject
lubCollection
w locie.Przykład z użyciem Google Gson :
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); }
źródło
Upewnij się, że masz pobierający w klasie adresu domu, a następnie użyj:
for(int i = 0; i < houseAddress.size(); i++) { System.out.print(houseAddress.get(i)**.getAddress()**); }
źródło
możesz użyć formatu print, jeśli chcesz po prostu wydrukować element na konsoli.
for(int i = 0; i < houseAddress.size(); i++) { System.out.printf("%s", houseAddress.get(i)); }
źródło
Zakładając, że
houseAddress.get(i)
toArrayList
można dodaćtoString()
poArrayList
:for(int i = 0; i < houseAddress.size(); i++) { System.out.print(houseAddress.get(i).toString()); }
Ogólny przykład:
ArrayList<Double> a = new ArrayList(); a.add(2.); a.add(32.); System.out.println(a.toString()); // output // [2.0, 32.0]
źródło
To jest prosty kod dodawania wartości w ArrayList i drukowania wartości 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); } } }
źródło