2016-12-13 4 views
1

から通常の配列を返します。この方法では、配列リストのすべてのオブジェクトを返す必要があります。しかし、どのように(私は配列リストを使用する必要があるか分からない)を理解することはできません。配列リスト

問題は、1つのreturn文で渡す必要があるオブジェクトの数が不明であることです。だから私は現在、それらをテーブルと呼ばれる配列リストに格納しています。私は一種のこだわっている

public GuestTable[] GetSeatingChart(String filename) { 
    GuestTable table1 = new GuestTable(); 
    GuestTable table2 = new GuestTable(); 
    GuestTable table3 = new GuestTable(); 

    table1.AddGuestToTable(47); 
    table2.AddGuestToTable(53); 
    table3.AddGuestToTable(53); 

    tables.add(table1); 
    tables.add(table2); 
    tables.add(table3); 

    return new GuestTable[] {tables.get()}; 
} 

私の問題はgetAll()機能を持っていない

return new GuesTable[] {tables.get()}; 

のArrayListである:

は、ここに私のコードです。配列リスト内の要素の数は表の数が異なるので、return文で何か静的なものを使うだけです。

このプロジェクトは最終的なプロジェクトのためのものですが、私はプログラミングの新機能です。

-Thanksマイク

+1

http://docs.oracle.com/javase/8/docs/api/java/utocs/api/java/util/ArrayList.html#toArray-T:A- – user2357112

+0

コードで戻そうとしているものは、リストではない配列です。 arrayListの使い方については、インターネットで確認してください。 – denis

答えて

3

ArrayListは方法があります。

toArray(T[] arr); 

だから、あなたは簡単にそれを利用することができます:

GuestTable[] tablesArray = new GuestTable[tables.size()]; 
tables.toArray(tablesArray); 
return tablesArray; 

それとも、単にArrayListsを返すようにメソッドのシグネチャを変更することができます。

public ArrayList<GuestTable> GetSeatingChart(String filename) { 
+0

ありがとうございました。私はそれが本当にばかな質問だったと確信していますが、今私は知っています。 –

0

MouseEventの優れた答えに加えて、私は彼の最後の例を完全に支持しなければならないでしょう。

問題は、なぜ完全に優れたArrayListオブジェクトを既に持っているときに配列を返そうとしているのですか?

私の非常に謙虚な意見では、配列はOOPパラダイムに適合しません。私はJavaには驚いています。デザイナーのCプログラマをモリー・コードリングする別の例(?)。配列とそれらの処理は、手続き型コード構造を招待します。

私のアドバイスは、Collectionsフレームワーク全体のドキュメントを読んだり、Arraylistsなどのフルパワーを説明するチュートリアルを探したり、配列の使用をやめることです。あなたはそれをはるかに優れたOOPプログラマになるでしょう(それがあなたの目的です)。

Java 8 Streamsの使用を開始すると、なぜ[謙虚に]配列が廃止とみなされるのかがわかります。

+0

それに反して...まず第一にArrayList自体は名前の通り配列に基づいて構築されていますが、どのように動作するはずですか?リンクリストを使用しますか?ランダムアクセスではパフォーマンス上の大きな問題があります(ただし、操作には優れています)。 – Mordechai

+0

第2に、配列リスト自体を返すことで、カプセル化のリスクが生じ、呼び出し元がその内容を変更する可能性があります。一般的な配列を返すと、元の配列は安全になります。 (OPは新しいリストを返すこともできます。) – Mordechai

+0

さらに、パフォーマンスが重要な要素である場合、Java Collection APIには、自動ボクシングとアンボクシングが遅すぎることがあるため、プリミティブ型の欠点があります。 – Mordechai