Tôi đã chơi xung quanh với lambdas Java 8 để dễ dàng lọc các bộ sưu tập. Nhưng tôi đã không tìm thấy một cách ngắn gọn để lấy kết quả dưới dạng một danh sách mới trong cùng một tuyên bố. Đây là cách tiếp cận ngắn gọn nhất của tôi cho đến nay:
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);
Các ví dụ trên mạng không trả lời câu hỏi của tôi vì chúng dừng lại mà không tạo danh sách kết quả mới. Phải có một cách ngắn gọn hơn. Tôi đã dự đoán rằng Stream
lớp có các phương thức toList()
, toSet()
,,
Có cách nào để các biến targetLongList
có thể được chỉ định trực tiếp bởi dòng thứ ba không?
List<Long> targetLongList = sourceLongList.stream().collect(Collectors.toList());
sourceLongList
sau đóCollection.removeIf(…)
để thuận tiện.