Hãy xem xét ví dụ sau đó in các yếu tố tối đa trong một List
:Lựa chọn giữa suối và Bộ sưu tập API
List<Integer> list = Arrays.asList(1,4,3,9,7,4,8);
list.stream().max(Comparator.naturalOrder()).ifPresent(System.out::println);
Mục tiêu tương tự cũng có thể đạt được bằng cách sử dụng Collections.max
phương pháp:
System.out.println(Collections.max(list));
Trên đây mã không chỉ ngắn hơn mà còn sạch hơn để đọc (theo ý kiến của tôi). Có những ví dụ tương tự mà bạn nghĩ đến như sử dụng binarySearch
và filter
được sử dụng cùng với findAny
.
Tôi hiểu rằng Stream
có thể là một đường ống vô hạn như trái ngược với Collection
bị giới hạn bởi bộ nhớ có sẵn cho JVM. Đây sẽ là tiêu chí của tôi để quyết định có nên sử dụng một số Stream
hoặc API Collections
hay không. Có bất kỳ lý do nào khác để chọn Stream
qua API Collections
(chẳng hạn như hiệu suất) hay không. Nói chung, đây có phải là lý do duy nhất để chọn Stream
qua API cũ hơn có thể thực hiện công việc một cách gọn gàng hơn và ngắn hơn không?
Bạn chỉ hỏi về phương pháp cụ thể này? –
Nếu lợi ích duy nhất của bạn là nhận giá trị 'max' từ danh sách, phương thức' Bộ sưu tập' là cách để đi. – GriffeyDog
Ngoài ra, hành vi 'Tùy chọn' so với' NoSuchElementException'. –