Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用LinkedHashMap进行迭代和初始化_Java_Spring_Jsf 2_Spring Jdbc - Fatal编程技术网

Java 使用LinkedHashMap进行迭代和初始化

Java 使用LinkedHashMap进行迭代和初始化,java,spring,jsf-2,spring-jdbc,Java,Spring,Jsf 2,Spring Jdbc,我有LinkedHashMap结果=从DB获得结果请参见 我需要使用for循环将上述结果分配给UI中可用的列表 for (Map.Entry<String, List<SelectItem>> entry : results.entrySet()) { String key = entry.getKey(); List<SelectItem> values = entry.getValue(); System.o

我有
LinkedHashMap结果
=从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");
}
基于这个键,我将这些值添加到一个diff列表中,就像我在上面给定的链接中所说的那样

上面的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/>
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]
如何从上面的列表中获取实际值

您可以执行以下操作:

首先为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");
                        }
}
for(Map.Entry:results.entrySet()){
String key=entry.getKey();
列表值=entry.getValue();
System.out.println(“Key=“+Key”);
System.out.print(“Values=“);}
用于(选择项选择项:值){
System.out.print(选择Item.toString()+“n”);
}
}

SelectItem
没有重写从
对象
类继承的
toString()
方法,该类是:

getClass().getName() + '@' + Integer.toHexString(hashCode())
这就是为什么你会得到这样的输出

因此,您必须遍历所有值并调用。这将调用由
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”)

回答:我也尝试了,但对我来说不起作用。是否有其他选项可以迭代并获取列表?我也尝试了上面的选项,但得到了以下输出键=getProjectManager值=javax.faces.model。SelectItem@94e3c1njavax.faces.model.SelectItem@f4acd1njavax.faces.model。SelectItem@17e0e74njavax.faces.model.SelectItem@e71be2njavax.faces.model。SelectItem@d79805njavax.faces.model.SelectItem@3d96a6njavax.faces.model。SelectItem@16d749enjavax.faces.model.SelectItem@1034f8dnjavax.faces.model。SelectItem@5bb9aenjavax.faces.model.SelectItem@1fb6021nKeyDid您在SelectItem类中创建了toString方法吗?SelectItem类在javax.jsf_1.2.0 jar中,它不可编辑。那么您需要遵循zouzou的建议并使用getValue()如果您能为我提供一些解决方案的链接或URL,我将不胜感激!谢谢您的打印正确!!。但是根据键,我必须将值分配给不同的列表,例如:xxlist,yylist,zzlist。但是我已经从数据库中检索到了列表,并将其放入hashmap并将其带入UI。但是为什么我必须再次迭代并获取值?我没有任何其他选项可以直接获取列表吗?而不是迭代advise@techy360很高兴它帮了忙:)谢谢它的正确打印!!。但是根据键,我必须将值分配给不同的列表,例如:xxlist,yylist,zzlist。但是我已经从数据库中检索到了列表,并将其放入hashmap并将其带入UI。但是为什么我必须再次迭代并获取值?我没有任何其他选项可以直接获取列表吗?而是迭代?请建议。检索列表的链接是here@techy360你什么意思?请用一个具体的例子编辑或问一个新问题。我已经列出了getProjectManager=new ArrayList();结果.put(“getProjectManager”,getProjectManager);在DAO中,我在LinkedHashMap结果中得到了结果。我不能根据关键字直接分配差异列表,比如xxlist=results.getvalue(),例如:if(key.equalsIgnoreCase(“getResourceOwnerSE”){tempselectedResOwnSeList=entry.getvalue();}在UI中?;而不是循环?我试图将结果直接分配给列表。我的目的是提高性能。
System.out.println("Key = " + key);
System.out.println("Values = "); 
for(SelectItem st : values){
    System.out.print(st.getValue()+" ");
}
System.out.println();