[英]Remove item from Nested list Java Stream
請提供一些幫助,我將不勝感激。 假設我有
"bookingId": 4,
"flights": [
{ ...
"flightNumber": "AUS382",
},
{ ...
"flightNumber": "ZOD498",
}
]
},
我想單獨刪除航班號為flightNumber
的ZOD498
,我該怎么做 go?
我試過passengerBooking.removeIf(e -> e.getFlights().stream().anyMatch(flightToRemove))
其中a
是謂詞 - Predicate<Flight> flightToRemove = e -> "ZOD498".equals(e.getFlightNumber())
這有點管用,但刪除了整個flight
object,所以 output 現在變成了
"bookingId": 4,
"flights": [
]
},
請問我需要進行哪些修改才能刪除特定航班並獲得類似於
"bookingId": 4,
"flights": [
{ ...
"flightNumber": "AUS382",
}
]
},
謝謝你
假設您有一個帶有對象List
Flight
的 class PassengerBooking
,並且passengerBooking
變量表示一個對象List
PassengerBooking
。
您可以遍歷List
的項目。 然后,對於每個PassengerBooking
object,使用相應的 getter 檢索航班List
,然后對返回的Collection
調用removeIf
方法。
public class Main {
public static void main(String[] args) {
List<PassengerBooking> passengerBooking = new ArrayList<>(List.of(
new PassengerBooking(4, new ArrayList<>(List.of(
new Flight("AUS382"),
new Flight("ZOD498")
)))
));
System.out.println(passengerBooking);
for (PassengerBooking passenger: passengerBooking){
passenger.getFlights().removeIf(f -> f.getFlightNumber().equals("ZOD498"));
}
System.out.println(passengerBooking);
}
}
此外,如果這是您的PassengerBooking
class 的常見操作,您可以考慮實現一個自定義方法以通過其 ID 刪除Flight
。
這是測試上面代碼的類實現的簡單假設。
class PassengerBooking {
private int bookingId;
private List<Flight> flights;
public PassengerBooking(int bookingId, List<Flight> flights) {
this.bookingId = bookingId;
this.flights = flights;
}
public int getBookingId() {
return bookingId;
}
public List<Flight> getFlights() {
return flights;
}
//Custom utility method
public void removeFlight(String flightID){
flights.removeIf(f -> f.getFlightNumber().equals("ZOD498"));
}
@Override
public String toString() {
return String.format("%d => %s", bookingId, flights);
}
}
class Flight {
private String flightNumber;
public Flight(String flightNumber) {
this.flightNumber = flightNumber;
}
public String getFlightNumber() {
return flightNumber;
}
@Override
public String toString() {
return flightNumber;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.