ArrayListを出力します


82

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

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

このコードで配列の実際のメモリアドレスを出力することしかできません:

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

メモリ内のアドレスの場所が必要ですか?
Paul Nikonowicz 2012

すみません、どういう意味かわかりません。arraylistは配列を指すアドレスを格納しており、配列の内容を出力したいのですが、どうすればよいかわかりません。
dancooper93 2012

私はそれをより明確にするために質問を言い換えようとしました。
antony.trupe 2012

住所とは、家の住所を意味します。おもう。
kuldeep Jain 2012

1
houseAddress変数の宣言と、それに含まれる要素のサンプルコードを教えてください。
Louis Wasserman

回答:


112

list.toString()で十分です。

インターフェイスListはtoString()のコントラクトを定義しませんが、AbstractCollection基本クラスはArrayListが継承する便利な実装を提供します。


同じ出力がSystem.out.println(list);によって出力されます。
asha 2016

4
リストはここにhouseAddressです:Arrays.toString(houseAddress.toArray())
初心者

3
AbstractCollectiontoString()は、その要素の内容を出力するためにすでにオーバーライドしています。したがって、そのすべての要素のをlist.toString()出力するだけtoString()です。これはすべてのコレクションに当てはまります。
ハニーフ

20

クラスにtoString()メソッドを追加してから、address

System.out.println(Arrays.toString(houseAddress));

39
これは配列に対してのみ機能し、配列リストに対しては機能しません。配列型ではないためhouseAddress、引数として指定することはできませんArrays.toString()
beckah 2014年

私の意見では、ループはここでのみ可能な方法です。誰かがより良いオプションを知っている場合は共有してください。
geniushkg 2016年

17

私が理解していることから、あなたは配列のArrayListを出力しようとしており、それを表示する1つの方法は次のようになります。

System.out.println(Arrays.deepToString(list.toArray()));

9

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


7

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

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

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

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

お役に立てれば。


7

あなたがそのような番号リストを持っているアシウム

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

5

それArrayListtoString呼び出しから返されるものであるため、またはそれが実際に格納しているものであるため、それが配列のアドレスを格納していると言っていますか?

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

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

これは、OPの現在のコードと同じです。問題は残っています。
トム

3

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


3

houseAddress.get(i)角かっこ内に入れて.toString()関数を呼び出します。つまり、以下を参照してください。

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

@ Mr.Goose質問がはっきりしませんが、どういう意味ですか?
2014

.toString()の呼び出しは冗長です。
ガブリエルペッレグリーノ

2

アドレスの概念を理解したかどうかはわかりませんが(ここではhouseAddressを想定しています)、ArrayListを出力する方法を探している場合は、次のようにします。

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

2
 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()));
    }

2

ArrayListを出力する最も簡単な方法は、toStringを使用することです。

List<String> a=new ArrayList<>();
    a.add("111");
    a.add("112");
    a.add("113");
    System.out.println(a.toString());

出力

[111、112、113]


2

イテレータを使用できます。ここで行うのは、最も単純で議論の余地のないことです。houseAddressデータ型の値があると言うString

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

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


1
ps ArrayListをArrayに変換し、それを文字列に変換して出力するなど、ここでは不要な変換を行っていないため、最も議論の余地はありません
Ishan Srivastava 2017年


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

}

class Address {private int addr; public Address(int i){addr = i; }

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

}


1

次のような拡張forループまたはイテレータを使用することもできます。

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

あなたはそれをどんなデータ型にでも変えることができhouseAddress、それは不必要な変換を避けます


1

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


0

コンソールで要素を印刷するだけの場合は、印刷形式を使用できます。

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

0

それ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]

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);
      }
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.