如何修复我的linkedHashSet插入顺序

时间:2019-02-13 06:43:41

标签: java

我已将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

1 个答案:

答案 0 :(得分:-1)

使用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