Jsf 如何防止集合中的SelectItem重复
我正在尝试将SelectItem对象添加到集合集合中。但是,正在添加重复的值。有没有办法防止这些重复值Jsf 如何防止集合中的SelectItem重复,jsf,duplicates,selectonemenu,Jsf,Duplicates,Selectonemenu,我正在尝试将SelectItem对象添加到集合集合中。但是,正在添加重复的值。有没有办法防止这些重复值 for(String s: list) { Set<SelectItem> typeSet = new HashSet<SelectItem>(); typeSet.add(new SelectItem(s)); } 用于(字符串s:list){ Set typeSet=新HashSet(); 排版。添加(新选择项); } 只需使用Set而不是S
for(String s: list) {
Set<SelectItem> typeSet = new HashSet<SelectItem>();
typeSet.add(new SelectItem(s));
}
用于(字符串s:list){
Set typeSet=新HashSet();
排版。添加(新选择项);
}
只需使用Set
而不是Set
。SelectItem#equals()
/#hashCode()
的实现完全没有考虑实际值
private Set<String> typeSet;
@PostConstruct
public void init() {
List<String> list = getItSomehow();
typeSet = new LinkedHashSet<String>(list);
}
私人排版;
@施工后
公共void init(){
List List=getItSomehow();
typeSet=新的LinkedHashSet(列表);
}
这是因为JSF2也可以在
上使用
<f:selectItems value="#{bean.typeSet}" />
另见:
hashCode()
和equals()
方法,以防止集中的重复。BalusC,与您建议的代码类似,我使用了SortedSet接口:SortedSet typeSet=new TreeSet()
它对字符串值进行排序,并将所有这些值添加到列表中您本身不需要列表
。您也可以直接将集合
输入到它,如回答所示。当然。我会试试看。多谢!