У меня есть фрагмент кода, который представляет собой древовидную карту, где ключом является день недели (понедельник, вторник и т. Д.), И поскольку древовидная карта автоматически сортирует ключи, он будет сортировать его только по значению алфавитов, поэтому не сортируетв соответствии с порядком дня недели
некоторые примеры уже отсортированной карты выглядят следующим образом:
"Friday"
"Thursday"
"Tuesday"
"Wednesday"
код службы impl выглядит следующим образом:
@Override
public ResponseDTO findAllTransactionByUserID(String userId){
ResponseDTO responseDTO = new ResponseDTO();
Map<String, Collection<UserHistoryDto>> map = new TreeMap<>();
List<Transaction> transactions = couponTransactionRepository.findTransactionByUserId(userId);
User user = userRepository.getOne(userId); //set the object based on ID
Integer date;
String day = "";
responseDTO.setUserPoint(user.getUser_point()); //Get user-point
for (Transaction trx : transactions) {
//get the value of days as a map key
date = trx.getTrans_time().getDayOfWeek().getValue();
day = trx.getTrans_time().getDayOfWeek().name();
Collection<UserHistoryDto> col = map.getOrDefault(day, new ArrayList<>());
col.add(collect(trx));
map.put(day, col);
}
responseDTO.setHistories(map)
return responseDTO;
}
"findAllTransactionByUserID" выполнит запрос уже отсортированный в соответствии с временем
, которое получилось в формате json:
{
"userPoint": 22735,
"histories": {
"FRIDAY": [
{
"transactionId": "CPT01552",
"date": 10,
"day": "FRIDAY",
"titleName": "Thanos super coupon",
"pointAffected": 420,
"transType": "Coupon",
"month": "MAY"
}
],
"THURSDAY": [
{
"transactionId": "CPT01504",
"date": 9,
"day": "THURSDAY",
"titleName": "Thanos super coupon",
"pointAffected": 420,
"transType": "Coupon",
"month": "MAY"
},
{
"transactionId": "CPT01404",
"date": 9,
"day": "THURSDAY",
"titleName": "Sea Shanties",
"pointAffected": 475,
"transType": "Coupon",
"month": "MAY"
}
],
"TUESDAY": [
{
"transactionId": "CPT01053",
"date": 7,
"day": "TUESDAY",
"titleName": "Thanos super coupon",
"pointAffected": 420,
"transType": "Coupon",
"month": "MAY"
},
{
"transactionId": "CPT00952",
"date": 7,
"day": "TUESDAY",
"titleName": "Sea Shanties",
"pointAffected": 475,
"transType": "Coupon",
"month": "MAY"
}
],
"WEDNESDAY": [
{
"transactionId": "CPT01154",
"date": 8,
"day": "WEDNESDAY",
"titleName": "Sea Shanties",
"pointAffected": 475,
"transType": "Coupon",
"month": "MAY"
{
"transactionId": "CPT01102",
"date": 8,
"day": "WEDNESDAY",
"titleName": "Thanos super coupon",
"pointAffected": 420,
"transType": "Coupon",
"month": "MAY"
}
]
}
}
я бы ожидалКарта JSON, где среда выше вторника.что-то вроде этого:
"Friday"
"Thursday"
"Wednesday"
"Tuesday"
Поскольку сравнение алфавитов дней не сработает, я пытаюсь найти способ создать компаратор, где я мог бы сравнить значение / порядок дней, чтобы онможет использоваться в качестве компаратора
i.e : Monday - 1
Tuesday - 2
возможно, мы можем использовать переменную «Дата» в фрагменте кода в качестве способа присвоить значение каждой клавише (или назначить вручную, если таковая работает) в компараторе, ноЯ знаю, как объединить компаратор с двумя различными типами данных
Я относительно новичок в Java и Spring Boot, и я впервые спрашиваю здесь о переполнении стека, я использую Java 8 и мало что знаю о лямбда-выражениях... так что любая критика и помощь очень полезны, спасибо!