簡體   English   中英

使用LinkedHashMap進行迭代和分配

[英]Iterating and asigning with LinkedHashMap

LinkedHashMap<String,List<SelectItem>> results =得到了來自DB的結果看這里

我需要使用for循環將上述結果分配給UI中可用的列表。

for (Map.Entry<String, List<SelectItem>> entry : results.entrySet()) {
        String key = entry.getKey();
        List<SelectItem> values = entry.getValue();
        System.out.println("Key = " + key);
        System.out.println("Values = " + values + "n");
}

分配零件示例:

if(key.equalsIgnoreCase("getProjectManager")) {
        tempselectedProjMgrList = entry.getValue();                             
}

根據密鑰,我將這些值添加到差異列表中,就像我在上面給定鏈接中所說的那樣。

上面的sys out不打印列表內的實際值,而是像下面給出的那樣打印。

Key = getProjectManager
Values = [javax.faces.model.SelectItem@fadb0a,javax.faces.model.SelectItem@1245c45]n
Key = getResourceOwnerSE
Values = [javax.faces.model.SelectItem@25f52c, javax.faces.model.SelectItem@323fc] <br/>

如何從上面的列表中獲取實際值。

SelectItem不會覆蓋從Object類繼承的toString()方法,該方法是:

getClass().getName() + '@' + Integer.toHexString(hashCode())

這就是為什么您會得到這樣的輸出。

因此,您必須遍歷所有值並調用getValue() 這將在SelectItem持有的值對象上調用toString()方法。

System.out.println("Key = " + key);
System.out.println("Values = "); 
for(SelectItem st : values){
    System.out.print(st.getValue()+" ");
}
System.out.println();

編輯:

如果您想直接獲取具有關聯密鑰的適當列表,只需執行

tempselectedResOwnSeList = results.get("getProjectManager");

您可以執行以下操作:

首先為SelectItem類創建一個toString方法,其中包含要打印的所有信息。 例如:

public class SelectItem {

private int a;
private String b;

@Override
public String toString() {
    return "SelectItem [a=" + a + ", b=" + b + "]";
}

}

然后做:

for (Map.Entry<String, List<SelectItem>> entry : results.entrySet()) {
                       String key = entry.getKey();
                        List<SelectItem> values = entry.getValue();
                        System.out.println("Key = " + key);
                        System.out.print("Values = ");}
                        for (SelectItem selectItem : values){
                            System.out.print(selectItem.toString() +    "n");
                        }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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