[英]Rearrange the List based on one its value in Java
創作一個 Java 方法,該方法將 List 作為參數(MasterList)並返回另一個列表(ExpectedList)。
MasterList:
{
(ID :abc123, Count: 20),
(ID :abc122, Count: 19),
(ID :abc122, Count: 20),
(ID :abc122, Count: 18),
(ID :abc121, Count: 21),
(ID :abc120, Count: 21),
(ID :abc120, Count: 20)
}
List 中的每個 object 都有兩個變量:
我試圖實現的邏輯是:當 MasterList 有多個MasterList
且 ID 相同時,只考慮特定的 object,其計數更大。 表示 ID: abc122
有 3 個對象,所以我只考慮(ID:abc122,計數:20),因為 ID:abc122 的對象中計數較高。 最后該方法應該返回
ExpectedList:
{
(ID :abc123, Count: 20),
(ID :abc122, Count: 20),
(ID :abc121, Count: 21),
(ID :abc120, Count: 21)
}
Stream 在您的列表上,並按ID
收集您的對象分組並映射到 object 並使用Collectors.maxBy
獲取最大計數以獲取Map<String,Optional<MyObject>>
。 Stream 在值上展開可選並收集到列表:
List<MyObject> result =
list.stream()
.collect(
Collectors.groupingBy(
MyObject::getId, Collectors.maxBy(Comparator.comparing(MyObject::getCount))))
.values()
.stream()
.map(Optional::get)
.collect(Collectors.toList());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.