Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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中将列表按特定顺序排序_Java_String_List_Sorting - Fatal编程技术网

在java中将列表按特定顺序排序

在java中将列表按特定顺序排序,java,string,list,sorting,Java,String,List,Sorting,实现列表自定义排序的最佳方法是什么 我有下面的常量列表 ENERGY_POLICY, OBJECTIVE, TRAINING, SEU_REPORT, ENERGY_PERFORMANCE, INTERNAL_AND_EXTERNAL_PARTIES, INTERNAL_AUDIT_REVIEW, LEGAL_REQUIREMENTS_REVIEW, TASKS_REVIEW, CORRECTIVE_ACTIONS 我想实现一个sort函数,按照下面显示的特定顺序对它们进行排序 [OBJECT

实现列表自定义排序的最佳方法是什么

我有下面的常量列表

ENERGY_POLICY, OBJECTIVE, TRAINING, SEU_REPORT, ENERGY_PERFORMANCE, INTERNAL_AND_EXTERNAL_PARTIES, INTERNAL_AUDIT_REVIEW, LEGAL_REQUIREMENTS_REVIEW, TASKS_REVIEW, CORRECTIVE_ACTIONS
我想实现一个sort函数,按照下面显示的特定顺序对它们进行排序

[OBJECTIVE, ENERGY_POLICY, TRAINING, ENERGY_PERFORMANCE, INTERNAL_AUDIT_REVIEW, LEGAL_REQUIREMENTS_REVIEW, TASKS_REVIEW, SEU_REPORT, CORRECTIVE_ACTIONS, INTERNAL_AND_EXTERNAL_PARTIES]

如果您能为我指出正确的方向,我们将不胜感激。

您可以将每个常量放入哈希映射中,将常量作为键,位置作为值


现在,当您收到常量时,从hashmap中获取它应该位于的位置,并基于它创建最终列表,您可以尝试以下操作


        List<String> strings = Arrays.asList("OBJECTIVE", "ENERGY_POLICY", "TRAINING", "ENERGY_PERFORMANCE", "INTERNAL_AUDIT_REVIEW",  "LEGAL_REQUIREMENTS_REVIEW", "TASKS_REVIEW, SEU_REPORT", "CORRECTIVE_ACTIONS", "INTERNAL_AND_EXTERNAL_PARTIES");

        Map<String, Integer> ranks = new HashMap<>();

        // Assign rank to each element and store in ranks map. This map will be used for retrieving rank of each element while defining custom sorter
        for (int i =0 ; i< strings.size() ; i++) {
            ranks.put(strings.get(i),i);
        }

        // Now lets take a list which needs to sorted based on above order
        List<String> stringsToBeSorted  = Arrays.asList("ENERGY_POLICY", "OBJECTIVE", "TRAINING", "SEU_REPORT", "ENERGY_PERFORMANCE", "INTERNAL_AND_EXTERNAL_PARTIES", "INTERNAL_AUDIT_REVIEW", "LEGAL_REQUIREMENTS_REVIEW", "TASKS_REVIEW", "CORRECTIVE_ACTIONS");

        stringsToBeSorted.sort(new Comparator<String>() {
            @Override
            public int compare(String str1, String str2) {
                if (ranks.get(str1) == null || ranks.get(str2) == null) {
                    return 0;
                }

                return ranks.get(str1) - ranks.get(str2);
            }
        });



但您需要确保strings具有所有值,并且stringsToBeSorted列表中不应有字符串列表中不存在的值。由于它将抛出空指针异常,因为它从hashmap检索到的秩为空

,我们如何知道,例如,
目标
应该在
能源政策
之前排序,而
纠正措施
应该在两者之后排序?请显示一些代码。这些常数是什么?它们是枚举吗?文件中的字符串?静态变量名?//他们是如何“进来的”?//您试图编写什么程序?您被困在哪里?
        stringsToBeSorted.sort(Comparator.comparingInt(ranks::get));