Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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 如何修复linkedHashSet插入顺序_Java - Fatal编程技术网

Java 如何修复linkedHashSet插入顺序

Java 如何修复linkedHashSet插入顺序,java,Java,我有3个部门添加到我的 Set workFlowDepartmentList=newlinkedhashset() 他们应该由谁先加入。但是,我的集合按升序添加它们。我如何解决这个问题?谢谢 我甚至尝试使用add(),根据谁先来/先添加,手动将3个部门添加到我的集合中成功了 //xhtml <h:selectManyMenu styleClass="chosen-select2" id="input-workFlowCode" value="#{Empl

我有3个部门添加到我的

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