簡體   English   中英

根據 Java 中的一個值重新排列列表

[英]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 都有兩個變量:

  1. 標識(字符串)
  2. 計數(數字)

我試圖實現的邏輯是:當 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM