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