0

私の教授は、彼女の研究室用にコードを変更するように私たちに要求しています。そして、特にこのラボでは、私の教授は、触れてはならない println() ステートメントを持っています。

ArrayCollection ac = new ArrayCollection(ARRAY_SIZE);

したがって、上記のコードは ac というオブジェクトをインスタンス化します。これはすべて問題なくダンディーですが、私の教授はコードに次のステートメントを持っているため、私は変更できません。

System.out.println ("Collection contains:  " + ac);

したがって、上記の行のために、次の役に立たない出力が得られます。

コレクションの内容: ArrayCollection{data=[Ljava.lang.Object;@24a20892, actualSize=3}

上記の出力から、オブジェクト ac について何がわかりますか? 出力はまったく役に立たないのでしょうか、それとも私の教授が意図したことだと思いますか。申し訳ありませんが、これは奇妙な質問であることは承知しています。なぜ私の先生がこのようなコードを残したのかについて、誰かのコメントをいただければ幸いです (彼女は非常に小さな間違いで減点します >.<)。

午前9時48分編集:

ArrayCollection ac included: {5,10,20} 上に投稿した出力の場合

4

6 に答える 6

1

@ の後の 16 進数は、オブジェクトのハッシュ コードです。オブジェクトの場合は、その参照です。これは、自動テストのために彼女にとって興味深いかもしれません。

于 2012-09-27T13:51:10.350 に答える
1

AbstractCollectionJDK 内のクラスの toString() メソッドを見てください。

public String toString() {
        Iterator<E> it = iterator();
        if (! it.hasNext())
            return "[]";

        StringBuilder sb = new StringBuilder();
        sb.append('[');
        for (;;) {
            E e = it.next();
            sb.append(e == this ? "(this Collection)" : e);
            if (! it.hasNext())
                return sb.append(']').toString();
            sb.append(',').append(' ');
        }
    }

それはあなたが期待するかもしれないことをします。

また、ロジックを「コピー」したくない場合は、インスタンスArrayCollectionから継承するAbstractCollectionか、直接使用しますArrayList

于 2012-09-27T13:49:32.113 に答える
0

ここで何が起こるかというとprintln、 の戻り値が出力されます。これにより、(彼女の実装が信頼できるものであるとArrayCollection.toString()仮定して) クラスArrayCollectionには少なくとも 2 つのフィールドがdataあるという情報が得られます。インスタンスは 3 です。Object[]actualSize

これは、実際の要素を保持する配列 ( ) に裏打ちされたArrayCollectionJava のインターフェースの実装であると想定するのが妥当と思われます。Collectiondata

于 2012-09-27T13:53:18.510 に答える
0

明らかに、教授はコレクションの参照ではなく、コレクションの内容を印刷したいと考えています。

方法は次のとおりです。

  • コレクションのコンテンツをループします。

  • このループ内で、各オブジェクトを呼び出し、結果の文字列をStringBuildertoString()に蓄積します。

  • この StringBuilder を印刷します。

于 2012-09-27T13:46:26.770 に答える
0

役に立たないわけではありませんが、次のデータが得られます。

ArrayCollection{data=[Ljava.lang.Object;@24a20892, actualSize=3}

各パラメータを調べることはできますか?

CollectionまたはCollectionsクラスのいずれかを拡張しています。

編集:ええ、AbstractCollectionを見てください

于 2012-09-27T13:46:43.740 に答える