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. 如果您不知道需要多少Meals,则无法避免制作副本,副本的摊销成本很便宜,并且无论如何列表比数组更适合该问题。如果你真的想要一个,你可以打电话list.toArray(new Meal[0])来获取一个数组。

于 2013-07-04T19:57:25.023 回答