Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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 在列表中查找对象_Java_List_Jsf - Fatal编程技术网

Java 在列表中查找对象

Java 在列表中查找对象,java,list,jsf,Java,List,Jsf,我在SelectOne菜单中有一个列表。 当用户选择此列表中的一个时,它会给我值,而不是它的标签。 我需要的是在屏幕上显示它的标签。有更简单的方法吗 我现在所做的就是用这样的方式: for(SelectItem si : listOfSomething) { if (si.getValue().equals(myValue) { theLabelIs = si.getLabel(); break; } } 也许我解释得不好,所以请告诉我,我会尽量解释得更好。使用映射,其中项目值是映

我在SelectOne菜单中有一个列表。 当用户选择此列表中的一个时,它会给我值,而不是它的标签。 我需要的是在屏幕上显示它的标签。有更简单的方法吗

我现在所做的就是用这样的方式:

for(SelectItem si : listOfSomething) {
 if (si.getValue().equals(myValue) {
  theLabelIs = si.getLabel();
  break;
 }
}

也许我解释得不好,所以请告诉我,我会尽量解释得更好。

使用
映射
,其中项目值是映射键,项目标签是映射值

private Map<String, String> options;

public Bean() {
    options = new HashMap<String, String>();
    options.put("value1", "label1");
    options.put("value2", "label2");
    options.put("value3", "label3");
    // ...
}
甚至在下面的观点中

您已经选择了

通常只显示标签。。我们应该使用数值进行计算。我想知道你为什么担心标签?他需要将所选项目的标签显示给那些可能对内部值没有任何意义的用户。我尝试过使用它,但没有找到使用h:SelectOne菜单上地图的方法。。你对如何做到这一点有什么想法吗?我假设你仍然使用JSF1.x?自从JSF2.x以来,它就得到了支持。您需要根据映射填充一个
列表
。您只需要使用
LinkedHashMap
而不是
HashMap
来维护插入顺序。但我想知道的是,如果我要根据地图进行填充,我仍然需要阅读整个地图来构建列表。我正试图找到一种方法来停止阅读整个列表。
String label = options.get(selectedValue);
// ...