Stream 分組篩選

2021-10-07 07:27:14 字數 519 閱讀 3309

/**

* 獲取相同名字裡面最大年齡的人

* @param alllist

* @return

*/private listgetlatestfileinfolist(listalllist)

//根據分組,組內取age最大的資料

map> groupedmap = alllist.stream().collect(collectors.groupingby(user::getname, collectors.maxby(comparator.comparing(user::getage))));

//將分好組的資料轉換成list,轉換後的list可以接受無序

listlist = groupedmap.values().stream().map(item-> item.ispresent()?item.get():null).collect(collectors.tolist());

return list;

}

相關知識點

stream 使用 分組

使用場景 已存在乙個物件的list列表,希望根據這個物件的某乙個屬性對list進行分組,然後將分組後的這個屬性形成字串。物件列表 listlsit new arraylist list.add new student 1,張三 12 1班 張三 12歲 list.add new student 1,...

Stream應用(一) 篩選與切片

stream是乙個資料流通道,用來操作集合 陣列 資料來源中的序列,並生成新的集合序列,在資料流通道中會對原來的集合 陣列 資料來源中的序列進行計算,計算的結果會生成乙個新的序列,放在乙個新的源中。運用stream操作分三步 建立stream流 流中間操作 終止流操作 注意 1.stream本省不會...

Stream 分組消費與持久化

比如在如下場景中,訂單系統我們做集群部署,都會從rabbitmq中獲取訂單資訊,那如果乙個訂單同時被兩個服務獲取到,那麼就會造成資料錯誤,我們得避免這種情況,這時我們就可以使用stream中的訊息分組來解決。注意在stream中處於同乙個group中的多個消費者是競爭關係,就能夠保證訊息只會被其中乙...