Tôi đã theo mã đơn giản mà tôi đang cố gắng để chuyển đổi sang phong cách chức năngThay if-else trong 'cho' vòng với Java-8 Streams
for(String str: list){
if(someCondition(str)){
list2.add(doSomeThing(str));
}
else{
list2.add(doSomethingElse(str));
}
}
Có một cách dễ dàng có thể thay thế vòng tuần hoàn này với dòng? Chỉ có tùy chọn tôi thấy là lặp qua luồng hai lần với hai điều kiện bộ lọc khác nhau.
Và tại sao bạn muốn làm điều đó nếu mã của bạn chỉ hoạt động? – fge
Bạn có thể sử dụng bản đồ với câu lệnh có điều kiện 'List list2 = list.stream(). Map (str -> someCondition (str)? DoSomeThing (str): doSomethingElse (str)). Collect (toList()); ' . Cho dù đó là dễ đọc hơn hay không là tùy thuộc vào người đọc (tôi thấy nó rõ ràng cá nhân). Bạn luôn có thể trích xuất quy trình này thành một phương thức trợ giúp nếu bạn muốn. –
@fge chỉ để hiểu lập trình chức năng tốt hơn trong Java :) – sidgate