0

マップを使用して、このシナリオの最善かつ最も効率的な方法を見つけようとしています。配列である必要があります。これを説明するためにダミーの例を作成しました。

基本的に、いくつかのsandwhich idとsandwhichの詳細で構成されるマップがあり、レタスのあるものだけを配列に入れたい場合。

配列の問題は、サイズがわかっている必要があることです。この場合、レタスのサンドウィッチがいくつあるかわかりません。配列リストを使用できますが、それを配列に変換する必要があります-これを非効率にするいくつかのコピー方法。

例:

//Assume that this map is given
Map<Integer, Sandwich> sandwiches = //some method gets all sandwiches
Meal[] meal = new Meal[sandwiches.size()];
for(Map.Entry<Integer, Sandwich> e : sandwiches.entrySet())
{
   if(e.getValue().hasLettuce())
        meal = new Meal(e.getValue);
}
//mandatory: An array must be returned
return meal;
4

1 に答える 1

4

を使用しArrayListます。必要な s の数がわからない場合、コピーを作成することを避ける方法はありません。Mealコピーの償却コストは安く、いずれにせよ、配列よりもリストの方が問題に概念的に適しています。list.toArray(new Meal[0])本当に配列が必要な場合は、呼び出して配列を取得できます。

于 2013-07-04T19:57:25.023 に答える