gpt4 book ai didi

java - 对数组列表进行最高效、最快速的搜索

转载 作者:行者123 更新时间:2023-12-02 11:09:58 26 4
gpt4 key购买 nike

我正在尝试迭代 ArrayList 并希望找到一个元素。列表中有数千个项目,因此需要很长时间才能找到。那么,任何人都可以建议有效且快速的搜索吗?代码如下:

private FoodItem getFoodItem(List<FoodItem> foodItemList, String foodItemId) {
if (foodItemId == null || foodItemList == null || foodItemList.isEmpty()) {
return null;
}
for (FoodItem foodItem : foodItemList) {
if (foodItem == null) {
continue;
}
if (foodItem.getId().equals(foodItemId)) {
return foodItem;
}
}
return null;
}

最佳答案

正如 @Eran 在评论中已经提到的。对于使用 Id 进行查找,使用 Map 可能是最佳选择。

要从 List 转换为 Map,您可以使用 Java8 Stream API:

Map<String, FoodItem> map = foodList.stream()
.collect(Collectors.toMap(FoodList::getId, Function.identity());

Note: this should be done once and not for every lookup.

然后进行查找:

public FoodItem getFoodItem(Map<String, FoodItem> map, String foodItemId){
if (foodItemId == null || foodItemList == null || foodItemList.isEmpty()) {
return null;
}
return map.get(foodItemId); // returns null if it doesn't exists
}

关于java - 对数组列表进行最高效、最快速的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50675144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com