2017-06-09 5 views
1

私はList<Item>とし、[ item print, item print, ...]として印刷されるように印刷したいと思いますが、リストの動的なタイプはわかりません。 (Item.toString()の実装があり、たとえば "item print"などのように)。Java - リストを印刷する<>

簡単に印刷する方法はありますか?

私は答えを検索しようとしましたが、それらのすべてが、わたしが知り得ないダイナミック型(ArrayListなど)を知っているリストのようです。また、javaのOracleのCollectionおよびListのドキュメントには、toString()メソッドが記載されていないようです。

ありがとうございます!

+0

Listが 'AbstractCollection'タイプで、すべてのリストがそうでない場合、' toString() 'メソッドは動作し、すべてのリストが' Object.toString() 'メソッドをオーバーライドするわけではありません。 –

+0

重要なことは、ItemクラスのtoStringをオーバーライドすることです。 Listインタフェースのすべての実装は、ListのtoStringを実装します。 – duffymo

+0

@duffymo - 間違っています。標準的な実装は、誰でもListを実装することができ、 'Object.toString()'を定義していない可能性があります。 –

答えて

1

: - 長い話を短くするには、単にJavaはその事をやらせると、デフォルトtoString()を呼び出しますリストや印刷、それ:

System.out.print("["); 
for(Item it : myListOfItems) { 
    System.out.print(it.toString() + ", "); 
} 
System.out.print("]"); 
+0

他の回答とコメントから、印刷が正しいかどうかを確認する唯一の方法はコードを書くことであることを理解しています。したがって、実装には単純な方法はありません。 私は正しいですか?イテレーターを使う方がいいですか? (質問に書いたように、ItemのtoStringメソッドをオーバーライドしました)。 – Mickey

+0

@Mickey同じです、あなたは両方を使うことができます:)私はなぜ誰かが私の答えを下落させたのか分かりませんhahaha、それがあなたのために働くなら、私はうれしいです:) –

+0

ありがとう!そのようなforループが反復処理されて同じ順序で返されるかどうかはわかりませんでした。 :) – Mickey

-2

どれ賢明なList実装(特にArrayList)は、そのアイテムのtoString()のすべてを呼び出し、いくつかの区切り記号(通常はカンマ)でそれらを結合してtoString()を実装しています。まず、あなたのItemクラスに行く、とのtoString()メソッドを@Override、その後、あなたが通過することができ

System.out.println(myList); 
+1

'toString()'を実装していない分かりやすいList実装があります。誰でもリストを実装できます。要求に必要かどうかに応じて、 'toString()'を実装している場合と実装していない場合があります。 OPは具体的に彼がリストの実際のタイプを知らないと述べている。 –

0

チェックこのアウト

public class ABC { 
    public static void main(String[] args) { 
     List<Item> items = new ArrayList<>(); 
     Item e1 = new Item(); 
     Item e2 = new Item(); 
     items.add(e1); 
     items.add(e2); 
     System.out.println(items); 
    } 
} 
class Item { 
    @Override 
    public String toString() { 
     return "item print"; 
    } 
} 

出力

[item print, item print] 
+0

あなたはArrayListを持っています。 OPは具体的に彼がリストの実際のタイプを知らないと述べている。 –

+0

実際に出力パターンはリストのタイプに関係なく同じになります。すべてのリストタイプ(arraylistまたはlinkedlist)は、このコレクションの文字列表現を返します。文字列表現は、イテレータによって返される順序でコレクションの要素のリストで構成され、角括弧([])で囲まれています。隣接する要素は、文字「、」(カンマとスペース)で区切られています。 https://docs.oracle.com/javase/7/docs/api/java/util/AbstractCollection.html#toString() –

+2

該当しません。標準のJava SDKが提供するListクラスについて考えています。 **誰でもListクラスを実装することができますが、そのような実装のすべてが 'toString()'を実装するわけではありません。** –

関連する問題