List<Map<String,Object>>根据同个key的值 自定义排序

发布于:2024-07-12 ⋅ 阅读:(125) ⋅ 点赞:(0)
package com.chinairi.kafka.datapush.utils;

import java.util.*;

public class CustomComparator implements Comparator<Map<String, Object>> {
    private String key;

    public CustomComparator(String key) {
        this.key = key;
    }

    @Override
    public int compare(Map<String, Object> map1, Map<String, Object> map2) {
        Object value1 = map1.get(key);
        Object value2 = map2.get(key);
        List<Object> order = Arrays.asList("A", "B", "C"); // Define the order of values

        int index1 = order.indexOf(value1);
        int index2 = order.indexOf(value2);

        if (index1 != -1 && index2 != -1) {
            return Integer.compare(index1, index2);
        } else if (index1 != -1) {
            return -1;
        } else if (index2 != -1) {
            return 1;
        } else {
            return 0;
        }
    }

    public static void main(String[] args) {
        List<Map<String, Object>> list = new ArrayList<>();
        // Assume the list is populated with your data
        Map<String, Object> map1 = new HashMap<>();
        map1.put("key", "B");
        Map<String, Object> map2 = new HashMap<>();
        map2.put("key", "A");
        Map<String, Object> map3 = new HashMap<>();
        map3.put("key", "C");

        list.add(map1);
        list.add(map2);
        list.add(map3);
        CustomComparator customComparator = new CustomComparator("key");
        Collections.sort(list, customComparator);

        for (Map<String, Object> map : list) {
            System.out.println(map);
        }
    }
}


网站公告

今日签到

点亮在社区的每一天
去签到