[英]Is there any better way to get the value from an array?
我已經賦值了
Menu[] food = {new Menu ("A01", "Burger", 10.00), ...}
Menu[] drinks = {...}
在主函數中
當我想在用戶從兩個數組的另一個函數中輸入ID時獲取價格的值時,我使用兩個for 循環來獲取價格
for (int i = 0; i < food.length; i++){
do{
if(food[i].getMenuID().equals(id)){
//codes
}
}while(!food[i].getMenuID().equals(id));
}
for (int i = 0; i < drinks.length; i++){
do{
if(drinks[i].getMenuID().equals(id)){
//codes
}
}while(!drinks[i].getMenuID().equals(id));
}
我可以知道有沒有更好的方法來獲得價格價值?
while
循環完全沒用,只用一個就可以了
String id = "A01";
Menu toFind = null;
for (int i = 0; i < food.length; i++){
if(food[i].getMenuID().equals(id)){
toFind = food[i];
System.out.println("Got it !");
break;
}
}
使用Streams
(java>8)對應的解決方案如下
Menu myMenu = Arrays.asList(food).stream().filter(menu -> menu.id.equals(id))
.findAny().orElse(null);
您還可以使用(如果您使用 java 1.8+ ):
String id = "A01"
Menu myMenu = Arrays.asList(food)
.stream()
.filter(menu -> menu.id.equals(id))
.findAny()
.orElse(null);
考慮到您想通過菜單項的鍵獲取價格,在這種情況下最好使用哈希映射(Map.of(...) 來自 Java 9):
Map<String, Menu> drinks = Map.of("A01", new Menu ("Cola", 10.00),
"A02", new Menu ("Fanta", 11.00));
Manu menu = drinks.get("A01")
或者,如果您不喜歡使用地圖的方法,則可以使用流 API (Java 8+):
Menu[] food = {new Menu ("A01", "Burger", 10.00), ...}
String menuIdToSearchFor = "A01";
Optional<Menu> optionalMenu = Arrays.stream(food)
.filter(menu -> menuIdToSearchFor.equals(menu.getMenuId())
.findFirst()
.orElse(...);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.