How to Sorted List<Map<Sting,Object> and change compare Two value date and value

Viewed 8

I have a question. How to Sorted List<Map<Sting,Object> and change compare value.

List<Map<String, Object>> dataList=new ArrayList<>();
Map<String, Object> someMap= new HashMap<>();

then i want sorted value and change value.

the someMap temp value like this.

someMap.put("totalPoint",1)
 someMap.put("regDate",2022-08-01 06:00)
 someMap.put("rank",1)

 someMap1.put("totalPoint",2)
 someMap1.put("regDate",2022-08-02 08:00)
 someMap1.put("rank",2)

 someMap2.put("totalPoint",2)
 someMap2.put("regDate",2022-08-01 06:00)
 someMap2.put("rank",3)


 someMap3.put("totalPoint",4)
 someMap3.put("regDate",2022-08-01 10:00)
 someMap3.put("rank",4)

some logic dataList.add(someMap);

 dataList.add(someMap1);
 dataList.add(someMap2);
 dataList.add(someMap3);

first i'd sotred totalPoint and change rank value

AtomicInteger ai=new AtomicInteger();
    List<Map<String, Object>> collect = dataList.stream()
            .sorted(Comparator.comparing(o -> String.valueOf(o.get("totalPoint")))).collect(Collectors.toList())
            .stream().map(x -> {
                x.put("rank", map.size() - ai.getAndIncrement());
                return x;
            }).collect(Collectors.toList());

That map sort totalpoint and replace rank to map.size() - ai.getAndIncrement()

But I want this result

I need compare date and total point from map

    someMap.put("totalPoint",1)
     someMap.put("regDate",2022-08-01 06:00)
     someMap.put("rank",4)
    
     someMap1.put("totalPoint",2)
     someMap1.put("regDate",2022-08-02 08:00)
     someMap1.put("rank",3) //compare this
    
     someMap2.put("totalPoint",2)
     someMap2.put("regDate",2022-08-01 06:00)
     someMap2.put("rank",2)//compare this
        
     someMap3.put("totalPoint",4)
     someMap3.put("regDate",2022-08-01 10:00)
     someMap3.put("rank",1)

how to use compare this map?

0 Answers
Related