Addressオブジェクトを含むArrayListがあります。
このArrayListの値、つまり配列の内容(この場合は数値)を出力するにはどうすればよいですか。
このコードで配列の実際のメモリアドレスを出力することしかできません:
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print(houseAddress.get(i));
}
Addressオブジェクトを含むArrayListがあります。
このArrayListの値、つまり配列の内容(この場合は数値)を出力するにはどうすればよいですか。
このコードで配列の実際のメモリアドレスを出力することしかできません:
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print(houseAddress.get(i));
}
houseAddress
変数の宣言と、それに含まれる要素のサンプルコードを教えてください。
回答:
list.toString()で十分です。
インターフェイスListはtoString()のコントラクトを定義しませんが、AbstractCollection基本クラスはArrayListが継承する便利な実装を提供します。
Arrays.toString(houseAddress.toArray())
toString()
は、その要素の内容を出力するためにすでにオーバーライドしています。したがって、そのすべての要素のをlist.toString()
出力するだけtoString()
です。これはすべてのコレクションに当てはまります。
クラスにtoString()
メソッドを追加してから、address
System.out.println(Arrays.toString(houseAddress));
houseAddress
、引数として指定することはできませんArrays.toString()
。
toString()
メソッドのカスタム実装を提供していないため、そのオブジェクトのメモリ内のアドレスを出力するデフォルトを呼び出します
Addressクラスのソリューションは、toString()
このようなメソッドをオーバーライドします
public class Address {
int addressNo ;
....
....
...
protected String toString(){
return Integer.toString(addressNo);
}
今あなたが電話するとき
houseAddress.get(i) in the `System.out.print()` method like this
System.out.print( houseAddress.get(i) )
オブジェクトが呼び出されます toString()
Address
あなたがそのような番号リストを持っているアシウム
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
リストを印刷する場合
//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);
それArrayList
がtoString
呼び出しから返されるものであるため、またはそれが実際に格納しているものであるため、それが配列のアドレスを格納していると言っていますか?
ArrayList
配列がある場合(例:
int[] arr = {1, 2, 3};
houseAddress.add(arr);
次に、呼び出す必要のある配列値を出力しますArrays.deepToString
。
for (int i = 0; i < houseAddress.size(); i++) {
System.out.println(Arrays.deepToString(houseAddress.get(i)));
}
Java 8以降、IterableインターフェイスからforEach()メソッドを使用できます。
これはデフォルトの方法です。引数として、関数型インターフェースConsumerを実装するクラスのオブジェクトを取ります。次の3つの方法でローカルに消費者を実装することができます
してAnnonymousのクラス:
houseAddress.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
ラムダ式:
houseAddress.forEach(s -> System.out.println(s));
またはメソッドリファレンスを使用して:
houseAddress.forEach(System.out::print);
この印刷方法は、Iterableインターフェイスのすべての実装で機能します。
これらはすべて、要素の印刷方法を定義する方法を提供しますが、toString()はリストを1つの形式で印刷します。
houseAddress.get(i)
角かっこ内に入れて.toString()
関数を呼び出します。つまり、以下を参照してください。
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print((houseAddress.get(i)).toString());
}
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()));
}
ArrayListを出力する最も簡単な方法は、toStringを使用することです。
List<String> a=new ArrayList<>();
a.add("111");
a.add("112");
a.add("113");
System.out.println(a.toString());
[111、112、113]
イテレータを使用できます。ここで行うのは、最も単純で議論の余地のないことです。houseAddress
データ型の値があると言うString
Iterator<String> iterator = houseAddress.iterator();
while (iterator.hasNext()) {
out.println(iterator.next());
}
注:別の回答で私が述べたように、これには拡張forループを使用することもできます
@Override public String toString()をコメントとして作成すると、同じ結果が得られます。ただし、toString()メソッドを実装すると、機能します。
パブリッククラス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);
}
}
class Address {private int addr; public Address(int i){addr = i; }
@Override public String toString()
{
Integer iAddr = new Integer (addr);
return iAddr.toString();
}
}
次のような拡張forループまたはイテレータを使用することもできます。
for (String name : houseAddress) {
System.out.println(name);
}
あなたはそれをどんなデータ型にでも変えることができhouseAddress
、それは不必要な変換を避けます
JSON
別の解決策は、リストをJSON形式に変換し、Json-Stringを出力することです。利点は、を実装する必要がなく、適切にフォーマットされた読みやすいObject-StringtoString()
です。さらに、それは他のObject
またはCollection
その場で機能します。
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);
}
Houseアドレスクラスにゲッターがあることを確認してから、次を使用します。
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print(houseAddress.get(i)**.getAddress()**);
}
それhouseAddress.get(i)
がArrayList
あなたであると仮定すると、あなたtoString()
はArrayList
:の後に追加することができます
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print(houseAddress.get(i).toString());
}
一般的な例:
ArrayList<Double> a = new ArrayList();
a.add(2.);
a.add(32.);
System.out.println(a.toString());
// output
// [2.0, 32.0]
これは、ArrayListに値を追加し、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);
}
}
}