簡體   English   中英

Java 流可以找到除 Max 之外的所有內容

[英]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.

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