我正在尝试用地图找出这个场景的最佳和最有效的方法。它需要是一个数组。我做了一个虚拟的例子来解释这个。
基本上如果有一张地图由一些三明治和三明治组成,我只希望那些有生菜的地图在一个数组中。
数组的问题是必须知道大小,在这种情况下我不知道有多少个带有生菜的三明治。我可以使用数组列表,但我需要将它转换为数组 - 一些复制方法会使这个效率低下。
示例:
//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;
答案 0 :(得分:4)
使用ArrayList
。如果你不知道你需要多少Meal
,那么就无法避免复制,副本的摊销成本便宜,而且列表更符合概念无论如何,问题比阵列。如果你真的需要,可以调用list.toArray(new Meal[0])
来获取数组。