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 Streamlớp có các phương thức toList(), toSet(),,
Có cách nào để các biến targetLongListcó thể được chỉ định trực tiếp bởi dòng thứ ba không?
List<Long> targetLongList = sourceLongList.stream().collect(Collectors.toList());
sourceLongListsau đóCollection.removeIf(…)để thuận tiện.