web-dev-qa-db-ja.com

ArrayListを印刷する

Addressオブジェクトを含むArrayListがあります。

このArrayListの値を印刷するにはどうすればよいですか。つまり、配列の内容(この場合は数字)を印刷します。

私はそれがこのコードで配列の実際のメモリアドレスをプリントアウトするためにそれを得ることができるだけです:

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i));
}  
65
dancooper93
Arrays.toString(list.toArray())
88
odoepner

addressクラスにtoString()メソッドを追加してください。

System.out.println(Arrays.toString(houseAddress));
16
Ashwinee K Jha

私が理解していることから、あなたは配列のArrayListを印刷しようとしていて、それを表示する唯一の方法は

System.out.println(Arrays.deepToString(list.toArray()));
9
Ben Dworkin

あなたはtoString()メソッドのためのカスタム実装を提供していないので、それはそのオブジェクトのためにメモリのアドレスをプリントしようとしているデフォルトを呼び出します

solutionあなたの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

AddressオブジェクトのSystem.out.print( houseAddress.get(i) )toString()が呼び出されます

9
confucius

あなたはそのような数字のリストを持っていると思います

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);
6
Ragulan

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)));
}
5
JoshBramlett

あなたは単純にそれを与えることができます:

System.out.println("Address:" +houseAddress);

出力は[address1, address2, address3]のようになります。

これは、ArrayListクラスまたはそのスーパークラスがtoString()関数をオーバーライドしているためです。

お役に立てれば。

4
Suraj
public void printList(ArrayList<Address> list){
    for(Address elem : list){
        System.out.println(elem+"  ");
    }
}
4
Love Bisaria

Java 8以降、IterableインターフェースからforEach()メソッドを使用できます。
これはデフォルトの方法です。引数として、それは機能的なインターフェースを実装するクラスのオブジェクトを取りますConsumer。次の3つの方法で、Consumerをローカルに実装できます。

あり匿名クラス

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つの形式で印刷します。

3

HouseAddress.get(i)を角かっこで囲み、.toString()関数を呼び出します。すなわち、以下を参照してください。

for(int i = 0; i < houseAddress.size(); i++) {System.out.print((houseAddress.get(i)).toString());
}  
3
21stking

住所の概念を理解したかどうかはわかりませんが(ここではhouseAddressを想定しています)、ArrayListを印刷する方法を探しているのであれば、ここでは次のようにします。

System.out.println(houseAddress.toString().replaceAll("\\[\\]", ""));
2
Manu

あなたはイテレータを使うことができます。ここでやるのが最も単純で最も物議をかもしないことです。 houseAddressにデータ型Stringの値があるとします。

    Iterator<String> iterator = houseAddress.iterator();
    while (iterator.hasNext()) {
    out.println(iterator.next());
    }

注:私が別の回答で述べたように、これには拡張forループを使用することもできます。

2

これは私を助けました:

System.out.println(Arrays.toString(codeLangArray.toArray()));
1
Abduhafiz

拡張forループやイテレータを使うこともできます。

for (String name : houseAddress) {
out.println(name);
}

HouseAddressというデータ型に変更することができ、不要な変換を回避できます。

1

コメントとして@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);
}

}

クラスAddress {private int addr; public Address(int i){addr = i;} }

@Override public String toString()
{
    Integer iAddr = new Integer (addr);
    return iAddr.toString();
}

}

1
user7194131

単に要素をコンソールに印刷したい場合は、印刷フォーマットを使用できます。

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.printf("%s", houseAddress.get(i));
}  
0
Kenneth Ryan Dy

House住所クラスにゲッターがあることを確認してから、次のコマンドを使用してください。

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i)**.getAddress()**);
}
0
gd-ogra