java - senarai<Map<String, Object>> sorting
漂亮男人
漂亮男人 2017-05-27 17:41:08
0
2
725
 利用
List<java.util.Map<String,Object>> charData = (List<java.util.Map<String, Object>>) map.get("data");

Data carta yang diperoleh ialah

[{TIME21=0, TIME22=2, TIME23=0, TIME12=0, TIME13=1, TIME10=0, TIME20=0, TIME11=1, TIME17=0, TIME9=2, TIME16=0, TIME15=0, TIME14=1, TIME5=0, TIME6=0, TIME19=0, TIME7=0, TIME18=1, TIME8=4, TIME1=0, TIME2=0, TIME3=0, TIME4=0, TIME0=0}]

Sekarang kita perlu menyusunnya supaya pesanannya TIME1, TIME2...perintah ini bagaimana kita harus menyusunnya?

漂亮男人
漂亮男人

membalas semua(2)
为情所困

Masalahnya adalah untuk mengisih kekunci dalam Peta Anda boleh menggunakan Treemap, kerana struktur kekunci adalah rentetan+int, dan ia diisih mengikut int, jadi anda mungkin perlu menulis sendiri pembanding.
Kod kasar, komparator agak mudah ditulis, cuma dibongkar, mungkin perlu dilaraskan mengikut situasi sebenar anda

TreeMap<String,Object> treemap = new TreeMap<String,Object>(
    new Comparator<String>() {
         @Override
         public int compare(String o1, String o2) {
             Integer i1 = Integer.parseInt(o1.substring(4));
             Integer i2 = Integer.parseInt(o2.substring(4));
             return i1.compareTo(i2);
         }
    }
);
treemap.put("TIME21",0);
treemap.put("TIME11",0);
treemap.put("TIME1",0);
treemap.put("TIME2",0);
Ty80

如非必须要使用Map,建议使用对象代替Map

  List<Map<String, Object>> list = new ArrayList<>();
        Map<String, Object> map1 = new HashMap<>();
        Map<String, Object> map2 = new HashMap<>();
        Map<String, Object> map3 = new HashMap<>();
        map1.put("TIME1", 1);
        map2.put("TIME13", 2);
        map3.put("TIME15", 3);

        list.add(map3);
        list.add(map2);
        list.add(map1);

        System.out.println(list);
        list.sort(new Comparator<Map<String, Object>>() {
            @Override
            public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                String s1 = "";
                for (String s : o1.keySet()) {
                    s1 = s;
                }
                String s2 = "";
                for (String s : o2.keySet()) {
                    s2 = s;
                }
                //获取TIME字符串后面的数字
                Integer i1 = Integer.parseInt(s1.substring(4));
                Integer i2 = Integer.parseInt(s2.substring(4));
                return i1.compareTo(i2);
            }
        });
        System.out.println("--------------");
        System.out.println(list);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan