Java 如何修复linkedHashSet插入顺序
我有3个部门添加到我的Java 如何修复linkedHashSet插入顺序,java,Java,我有3个部门添加到我的 Set workFlowDepartmentList=newlinkedhashset() 他们应该由谁先加入。但是,我的集合按升序添加它们。我如何解决这个问题?谢谢 我甚至尝试使用add(),根据谁先来/先添加,手动将3个部门添加到我的集合中成功了 //xhtml <h:selectManyMenu styleClass="chosen-select2" id="input-workFlowCode" value="#{Empl
Set workFlowDepartmentList=newlinkedhashset()代码>
他们应该由谁先加入。但是,我的集合按升序添加它们。我如何解决这个问题?谢谢
我甚至尝试使用add(),根据谁先来/先添加,手动将3个部门添加到我的集合中代码>成功了
//xhtml
<h:selectManyMenu styleClass="chosen-select2" id="input-workFlowCode"
value="#{EmployeeClearanceController.workFlowDepartmentList}">
<f:selectItems value="#{EmployeeClearanceController.departmentList}" var="dept"
itemValue="#{dept.departmentCode}" itemLabel="#{dept.name}"/>
f:ajax execute="change"/>
</h:selectManyMenu>
//controller
/* What i tried to add manually [worked]
workFlowDepartmentList.add("D0002-25");
workFlowDepartmentList.add("D0002-13");
workFlowDepartmentList.add("D0002-26");
*/
for(String dept : workFlowDepartmentList){
System.out.println("dept: " + dept);
}
//xhtml
f:ajax execute=“change”/>
//控制器
/*我试图手动添加的内容[有效]
工作流部门列表。添加(“D0002-25”);
工作流部门列表。添加(“D0002-13”);
工作流部门列表。添加(“D0002-26”);
*/
用于(字符串部门:workFlowDepartmentList){
系统输出打印项次(“部门:+dept”);
}
在我的
中,我按顺序选择了D0002-25、D0002-13、D0002-26
。
我希望输出是相同顺序的。但是,我从控制器获得的实际输出:
部门:D0002-13
部门:D0002-25
部门:D0002-26
使用树集而不是LinkedHashSet
TreeSet<String> workFlowDepartmentList = new TreeSet<>();
workFlowDepartmentList.add("D0002-25");
workFlowDepartmentList.add("D0002-13");
workFlowDepartmentList.add("D0002-26");
for (String dept : workFlowDepartmentList) {
System.out.println("dept: " + dept);
}
Output be like this::
dept: D0002-13
dept: D0002-25
dept: D0002-26
TreeSet workFlowDepartmentList=新建TreeSet();
工作流部门列表。添加(“D0002-25”);
工作流部门列表。添加(“D0002-13”);
工作流部门列表。添加(“D0002-26”);
用于(字符串部门:workFlowDepartmentList){
系统输出打印项次(“部门:+dept”);
}
输出应如下所示:
部门:D0002-13
部门:D0002-25
部门:D0002-26
您应该检查LinkedHashSet中元素的插入顺序,因为它始终保持元素的顺序。LinkedHashSet将保留插入顺序。看起来这个bug与前端代码有关。你能再检查一下吗?很抱歉反应太晚了。感谢Chetan Joshi和JavaUser。我将检查我的LinkedHashSet和前端代码。TreeSet将对元素进行排序,这样它就不会保持插入顺序。@javaUser但同时他不能排序和保持插入顺序,所以最好使用TreeSet