[英]How to get a an object with a fixed string from an array in java?
我有一個對象數組,其長度可以動態更改,但最大值始終為 8。每個對象都有一個描述它的固定字符串,例如:
array.get(0).getString() = apple
array.get(1).getString() = blueberry
array.get(2).getString() = banana
array.get(3).getString() = cherry
array.get(4).getString() = coconut
array.get(5).getString() = grapefruit
array.get(6).getString() = lemon
array.get(7).getString() = orange
根據我從 api 獲得的對象數量和字符串類型,我想隱藏或顯示一個視圖。 我目前正在使用這樣的 switch 語句:
if (array.toArray().length == 1) {
switch (array.get(0).getString()) {
case "apple":
...
break;
case "blueberry":
...
break;
case "banana":
...
break;
case "cherry":
...
break;
case "coconut":
...
break;
case "grapefruit":
...
break;
case "lemon":
...
break;
case "orange":
...
break;
} else if (array.toArray().length == 2) {
switch (array.get(0).getString()) {
...
}
switch (array.get(1).getString()) {
...
}
}
我這樣做了 8 次,每次都必須添加一個新的 switch 語句。 有沒有辦法簡化這個?
您可以使用循環,也可以使用 Map 來避免使用 switch 語句。
List<YourCustomObject> arr = getObjectsFromAPI();
Map<String, Boolean> fruitVisibility = new HashMap<>();
fruitVisibility.put("apple", true); // Let' say apple is visible
fruitVisibility.put("orange", false); // Orange is not visible
// ..... and so on
for(YourCustomObject obj : arr){
if(fruitVisibility.containsKey(obj.getString()))
view.setVisible(fruitVisibility.get(obj.getString()));
}
或者您可以使用您正在嘗試的方式。
for(int i=0; i<array.size(); i++){
switch(array.get(i).getString()){
// case ..
// ....
}
}
你可以使用迭代器,有點像波紋管:
Iterator iterator = list.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.