2012-02-11 9 views
2
public static void main(String[] args) { 
    LinkedList test = new LinkedList(); 
    int[] numberPair; 
    numberPair = new int[2]; 
    numberPair[0] = 1; numberPair[1] = 2; 

    test.add(numberPair); 

} 

このリストの最初のノードで配列にアクセスして印刷するにはどうすればよいでしょうか?私はtest.getFirst()であらゆる種類のキャストを試みましたが、メモリアドレスを出力するか、オブジェクトのキャスティングエラーの長いリストを取得します。Java /配列を含むLinkedListノードの印刷

答えて

3

Arrays.toString()をお試しください。

詳細はjavadocを参照してください。

編集:他の回答が指摘したように

、あなたもあなたのリストにジェネリックを使用する必要があります。 LinkedList<int[]>と宣言してください。要素を繰り返し処理するときは、Arrays.toStringを使用して各要素を文字列に変換し、結果を出力します。

+0

おかげを使用し、私が行うために必要なすべてがでそれを宣言した、とArrays.toStringは仕事を始めました。なぜそれがそれに影響するのか分かりませんが、ちょっと、うまくいきます。 – user1204458

+0

@ user1204458: ''を使用しないか(または、リストから取得した後にその要素を 'int []'に明示的にキャストしない限り)、 'Object'とみなされます。 'Arrays.toString()'を 'Object'に適用することはできません。なぜなら' int [] 'を期待しているからです。 – MAK

+0

@ user1204458:これで問題が解決した場合は、これを受け入れられた回答としてマークすることができます。 – MAK

1

そうのような使用して、Java 1.5以降を使用するJavaのジェネリック場合:

LinkedList<int[]> test = new LinkedList<int[]>(); 
int[] top = test.getFirst(); 
for (int i: top){ 
    System.out.print(i+" "); 
} 
System.out.println(); 
1

あなたは生タイプの代わりにジェネリック型を使用する必要があります。

LinkedList<int[]> test = new LinkedList<int[]>(); 

、あなたがtest.getFirst()バックint配列を取得するので、ちょうどそれを反復処理されます。

int[] bla = test.getFirst(); 

for (int i : bla) 
    System.out.println(i); 

それとも

Arrays.toString(test.getFirst());