簡體   English   中英

如何從java中的數組中獲取具有固定字符串的對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM