我有3个部门

Set<String> workFlowDepartmentList = new LinkedHashSet<>();

并且应该由谁来添加。但是,我的集合按升序添加它们。我该如何解决?谢谢。

我什至尝试通过使用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);
}


在我的<h:selectManyMenu>中,我已按该顺序选择了D0002-25, D0002-13, D0002-26
我希望输出以相同的顺序类似。但是,我从控制器获得的实际输出是:
dept: D0002-13 dept: D0002-25 dept: D0002-26

最佳答案

使用TreeSet而不是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

关于java - 如何修复我的linkedHashSet插入顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54664103/

10-12 05:02
查看更多