Trong Java, một Stream là một dãy các phần tử (hoặc thành phần) và cung cấp một tập hợp các phương thức để thao tác trên chúng. Các phương thức có thể thao tác trên các phần tử của stream mà không thay đổi giá trị của chúng, chẳng hạn như sắp xếp, lọc, tìm kiếm, tính toán và tổng hợp.
Có hai loại Stream trong Java:
- Stream of elements: Stream của các phần tử, chẳng hạn như một stream của số nguyên hoặc một stream của chuỗi.
- Stream of primitive: Stream của các kiểu dữ liệu nguyên thủy, chẳng hạn như stream của kiểu int hoặc stream của kiểu double.
Stream cung cấp các phương thức cho phép bạn thực hiện các thao tác trên dãy các phần tử mà không thay đổi giá trị của chúng. Stream còn có thể được sử dụng với các tác vụ dựa trên tổng hợp, chẳng hạn như tính tổng hoặc tìm giá trị lớn nhất.
Các stream có thể được tạo ra từ các nguồn dữ liệu khác nhau, chẳng hạn như mảng, danh sách, tập hợp, hoặc từ các phương thức tạo stream trong lớp Stream.
Xem thêm đọc và ghi file trong c++
Ví dụ về Stream trong Java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); Stream<Integer> stream = numbers.stream(); stream.filter(n -> n % 2 == 0).forEach(System.out::println);
Trong ví dụ trên, chúng ta tạo một Stream từ một danh sách số nguyên và sử dụng phương thức filter để lọc các số chẵn. Sau đó, chúng ta sử dụng phương thức forEach để in các số chẵn ra màn hình.
Stream còn cung cấp các phương thức khác như map, reduce, collect, count, min, max, … để thao tác với dữ liệu.
Stream có thể được sử dụng với các tác vụ dựa trên tổng hợp, chẳng hạn như tính tổng hoặc tìm giá trị lớn nhất.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); int sum = numbers.stream().mapToInt(Integer::intValue).sum(); System.out.println("Sum: " + sum);
Trong ví dụ trên chúng ta sử dụng phương thức mapToInt và sum để tính tổng các số trong danh sách numbers.
Stream là một tính năng mạnh mẽ trong Java 8 và trở lên, cho phép bạn thực hiện các thao tác trên dữ liệu một cách nhanh chóng và hiệu quả.
Xem thêm Streams trong Node.js
Các toán tử trong stream java
Trong Java, Stream cung cấp một số toán tử (hoặc phương thức) để thao tác trên dữ liệu:
- filter: Lọc các phần tử trong stream theo một điều kiện nhất định.
- map: Chuyển đổi từng phần tử trong stream theo một hàm cho trước.
- flatMap: Chuyển đổi từng phần tử trong stream thành một stream con và gom các stream con lại thành một stream duy nhất.
- distinct: Loại bỏ các phần tử trùng lặp trong stream.
- sorted: Sắp xếp các phần tử trong stream theo thứ tự tăng dần hoặc giảm dần.
- peek: Gọi một hàm cho mỗi phần tử trong stream nhưng không thay đổi giá trị của chúng.
- limit: Giới hạn số lượng phần tử trong stream.
- skip: Bỏ qua một số lượng phần tử đầu trong stream.
- forEach: Duyệt qua từng phần tử trong stream và thực hiện một hàm cho mỗi phần tử.
- reduce: Tổng hợp tất cả các phần tử trong stream thành một giá trị duy nhất.
- collect: Tập hợp các phần tử trong stream vào một đối tượng tùy chọn, chẳng hạn như một danh sách hoặc một tập hợp.
- count: Đếm số lượng phần tử trong stream.
- min: Tìm giá trị nhỏ nhất trong stream.
- max: Tìm giá trị lớn nhất trong stream.
- anyMatch: Kiểm tra xem có bất kỳ phần tử nào trong stream thỏa mãn điều kiện nhất định.
- allMatch: Kiểm tra xem tất cả các phần tử trong stream có thỏa mãn điều kiện nhất định.
- noneMatch: Kiểm tra xem không có phần tử nào trong stream thỏa mãn điều kiện nhất định.
Các toán tử trên chỉ là một số trong số rất nhiều toán tử có sẵn trong Stream trong Java, và bạn có thể kết hợp chúng để thực hiện các thao tác phức tạp hơn trên dữ liệu.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); numbers.stream().filter(n -> n % 2 == 0).map(n -> n * 2).forEach(System.out::println);
Trong ví dụ trên, chúng ta sử dụng các toán tử filter và map để lọc các số chẵn và nhân chúng với 2 sau đó in ra màn hình.
Các toán tử trên có thể kết hợp với nhau để thực hiện các thao tác phức tạp hơn trên dữ liệu, như tìm giá trị lớn nhất của các số chẵn trong một danh sách, hoặc tìm tất cả các chuỗi có độ dài lớn hơn một giá trị nhất định trong một tập hợp các chuỗi.
Stream là một tính năng mạnh mẽ trong Java 8 và trở lên, cho phép bạn thực hiện các thao tác trên dữ liệu một cách nhanh chóng và hiệu quả.
Xem thêm Mã hóa Stream Cipher