-4

size() メソッドを使用して、arraylist 内のさまざまなタイプのエントリを見つけることは可能ですか? たとえば、2 つの異なるタイプ (個人エントリ、ビジネス エントリ) の arraylist があります。

次のような numberOfEntries メソッドがあります。

data = new ArrayList<Entry>();

public int numberOfEntries() {
    return data.size();
  }

ただし、これは合計エントリ (個人およびビジネス) をカウントします。instanceOf を使用して、私が知らない配列をループするよりも、より簡単で良い方法はありますか?

4

4 に答える 4

2

の使用法と重要性に応じて、dataを格納する小さなクラスを作成できますEntry。たとえば、Map<Class<?>, List<Entry<?>>>.

次に、単に sth を実行できます。のようにMyObjectOfClass.getEntriesOfType(Personal.class).size()

于 2013-05-07T10:11:14.287 に答える
1

2 つの型を分離する別のコレクション クラスを使用しない限り (ここでは適切である場合とそうでない場合があります)、いいえ。

配列をループしてカウントする必要があります。「魔法」が組み込まれているものは何もありません。

Google Guava のようなライブラリを使用することもできますが、内部では同じことを行っています。

于 2013-05-07T10:05:18.407 に答える
0

私の知る限りではありませんが、実装するのは難しくありません.ArrayListから継承するクラスを定義し、タイプのプロパティを追加できます

Map<Class,Integer>

指定されたタイプのオブジェクトがこの配列にいくつあるかというデータを収集し、 add() メソッドをオーバーライドし、オブジェクトを挿入する前に統計コードを追加します

public boolean add(E e) {
    // add code here to the collect info
    return super.add(e)
} 
于 2013-05-07T10:12:37.977 に答える