使用LinkedHashMap迭代和分配

时间:2014-01-07 11:45:29

标签: java spring jsf-2 spring-jdbc

我有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/>

如何从上面的列表中获取实际值。

2 个答案:

答案 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");
                        }
}