У меня есть эти POJO
class LocaleBook
{
private String bookId;
private String bookName;
private Locale locale;
//setters & getters
}
class Locale
{
private String country;
private String language;
//setters & getters
}
Пример данных для вышеупомянутого:
"alice", "Alice in the wonderland", "GB", "en"
"matrix", "The Matrix", "TH", "en"
"christtree", "The Christmas Tree", "GB", "en"
И этот метод:
List<LocaleBook> localeBooks = repo.getLocalBooks();
Я хочу сгруппировать данные вместе по стране и языку, и я создал этот POJO:
class NewPoJo
{
private String country;
private String language;
private List<KeyValuePair> localeBooks = new HashSet<>();
//setters & getters
}
class KeyValuePair {
private String label;
private String value;
//setters & getters
}
Ожидаемый результат:
[
{
"country":"GB",
"language":"en",
"localeBooks":[
{
"label":"alice",
"value":"Alice in the wonderland"
},
{
"label":"christtree",
"value":"The Christmas Tree"
}
]
},
{
"country":"TH",
"language":"en",
"localeBooks":[
{
"label":"matrix",
"value":"The Matrix"
}
]
}
]
Я пытался Collectors.groupingBy
по country
и language
но кажется, что это создаст что-то вроде следующего, чего я не хочу. Как я могу сделать это до ожидаемого результата, который я хочу?
{
"GB_en": [
{
"label": "alice"
"value": "Alice in the wonderland"
},
{
"label": "christtree"
"value": "The Christmas Tree"
}
]
}