基于某些条件从地图返回数组的最佳和最快的方法

时间:2013-07-04 19:53:05

标签: java performance data-structures

我正在尝试用地图找出这个场景的最佳和最有效的方法。它需要是一个数组。我做了一个虚拟的例子来解释这个。

基本上如果有一张地图由一些三明治和三明治组成,我只希望那些有生菜的地图在一个数组中。

数组的问题是必须知道大小,在这种情况下我不知道有多少个带有生菜的三明治。我可以使用数组列表,但我需要将它转换为数组 - 一些复制方法会使这个效率低下。

示例:

//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;

1 个答案:

答案 0 :(得分:4)

使用ArrayList。如果你不知道你需要多少Meal,那么就无法避免复制,副本的摊销成本便宜,而且列表更符合概念无论如何,问题比阵列。如果你真的需要,可以调用list.toArray(new Meal[0])来获取数组。