我有LinkedHashMap<String,List<SelectItem>> results
=从DB获得结果,请参阅here
我需要使用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/>
如何从上面的列表中获取实际值。
答案 0 :(得分:1)
SelectItem
没有覆盖toString()
类中的Object
方法,该方法是:
getClass().getName() + '@' + Integer.toHexString(hashCode())
这就是你得到这样一个输出的原因。
因此,您必须遍历所有值并调用getValue()
。这将调用toString()
保留的值对象上的SelectItem
方法。
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");
答案 1 :(得分:0)
您可以执行以下操作:
首先为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");
}
}