ฉันกำลังเล่นกับ lambdas Java 8 เพื่อกรองคอลเลกชันได้อย่างง่ายดาย แต่ฉันไม่พบวิธีรัดกุมในการดึงผลลัพธ์เป็นรายการใหม่ภายในข้อความเดียวกัน นี่คือแนวทางที่รัดกุมที่สุดของฉัน:
List<Long> sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L);
List<Long> targetLongList = new ArrayList<>();
sourceLongList.stream().filter(l -> l > 100).forEach(targetLongList::add);
ตัวอย่างบนอินเทอร์เน็ตไม่ได้ตอบคำถามของฉันเพราะพวกเขาหยุดโดยไม่สร้างรายการผลลัพธ์ใหม่ จะต้องมีวิธีที่กระชับกว่านี้ ฉันจะคาดหวังว่าStream
ชั้นมีวิธีการเป็นtoList()
, toSet()
...
มีวิธีที่ตัวแปรtargetLongList
สามารถกำหนดโดยตรงโดยบรรทัดที่สามหรือไม่?
List<Long> targetLongList = sourceLongList.stream().collect(Collectors.toList());
sourceLongList
หลังจากนั้นมีCollection.removeIf(…)
เพื่อความสะดวก