0

これはかなり広いので、私が具体的な答えを期待している質問ではありません。私は自分自身にJavaを教えており、特に動的メモリ割り当てに焦点を当てています。非常に単純化した例を作成しましょう。非常に基本的なデータ入力画面があるとします。非常に基本的なことなので、ユーザーは一連の名を入力するだけです。おそらく、従業員のディレクトリなどです。私のJFrameには、これらの名前を入力する単一のJTextFieldコントロールがあります。従業員の数は、実行時にのみわかります。ユーザーが名前を入力してEnterキーを押すと、名前がメモリにコミットされ、次の名前を格納するための新しいオブジェクトが作成されます(ばかげていますが、焦点を合わせようとしています)。このようなもの(これを文字通りに解釈しないでください-私は明らかにこれをコンパイルしませんでした):

public class Employee {
  String fName;

  public void setName( String n ) {
      fName = n;
  }
};

public class JFrameEmp {

//blah, blah, blah

JTxtName.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
        /* Handle the enter key */
        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
            /* Store name */
            this.setName(JTxtName.getText());

            /* Create New Object */
            Employee next = new Employee();
            }
        };
    }
}

私が助けを必要としているのは最後の行です。これがうまくいったとしても、入力した名前のリストを印刷したいとしましょう。私のアプローチでは、各オブジェクトを一意に識別する方法がわかりません(オブジェクトを反復処理できるようにするため)。

これらを格納するために配列を作成する必要がありますか?しかし、それは固定長であり、スタック上に存在します。ヒープを使用して、制限のないリストを作成する方法を見つけたいと思います。

これを行う方法を学ぶために私は何を読むべきですか?それは非常に一般的なことであるに違いありませんが、私が持っている本はそれをカバーしていないようです。

ありがとう。あまり詳しく説明せずに、これを十分に説明できたことを願っています。

4

3 に答える 3

2

のを保存したいようListですEmployee。Javaは、動的なサイズの配列とそのArrayListクラスを提供します。

次に例を示します。

ArrayList<Employee> employees = new ArrayList<Employee>();
employees.add(new Employee("Alice"));
employees.add(new Employee("Bob"));
System.out.println(employees.get(0)); // prints out Alice
于 2012-06-16T03:18:22.423 に答える
2

配列を使用できます。Javaコレクションフレームワーク、特に実装に関するページを見ると便利な場合があります。

ただし、オブジェクトをある種のデータ構造に追加する必要があります。そうしないと、オブジェクトへの有効な参照がなくなった後、ガベージコレクターによってオブジェクトがクリーンアップされます。

于 2012-06-16T03:19:30.237 に答える
2

データストレージ構造を探しているようです。

組み込みの配列を使用できます。これは実際にはJavaのヒープに格納されています(唯一の問題は、サイズを追跡し、より多くのスペースが必要になったときに再割り当てする必要があることです)。

より良いオプションは、add必要に応じて自動的にサイズ変更するメソッドが組み込まれているArrayListです。

また、HashMapを使用して、名前で従業員をすばやく検索することもできます。

于 2012-06-16T03:19:40.343 に答える