[英]Java streams to find all apart from Max
我仍在學習 java 流,無法找到解決問題的方法。
設想:
我有一個對象列表,每個對象都有一個名為 stageNo 的標識符。
所以基本上我要做的是根據 stageNo 過濾掉最大對象並將方法設置為特定值。
代碼:
Object currentObject = new Object();
List<Object> objects = new ArrayList<>();
objects
.stream()
.filter(object -> object.stageNoCalculate == currentObject.getStageNo)
.filter(object -> object.executionDate != null)
.max(Comparator.comparing(Object::getStageNo)
.map(object -> {
object.setFlag(1);
return object;
}).get();
這將導致具有最大 stageNo 的對象,並將 flag 方法相應地設置為 1。這可以正常工作,沒有問題。
現在我試圖找到所有滿足過濾條件的對象,而不是 max,而是找到除了max 和 setFlag(0) 之外的所有對象。
我不完全確定這樣做的方式,嘗試尋找解決方案,但找不到。
謝謝
您可以從最大到最小對流進行排序,並跳過第一個元素。
objects
.stream()
.filter(object -> object.stageNoCalculate == currentObject.getStageNo)
.filter(object -> object.executionDate != null)
.sorted(Comparator.comparing(Object::getStageNo).reversed())
.skip(1) //Skip the first element, which is the max
.forEach(object -> {
object.setFlag(0);
return object;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.