Tìm hiểu các hàm trong Java Stream trong lập trình java cho người mới học

Bạn đang học lập trình java mà chưa biết stream là gì ? Khám phá ngay bài viết này để tìm hiểu cách dùng các hàm hay sử dụng trong java stream bạn nhé.

Java Stream API là gì ?

Java Stream API là một phần của Java Standard Library, được giới thiệu từ Java 8, giúp xử lý các tập hợp dữ liệu một cách hiệu quả và dễ đọc. Stream API cung cấp một cách tiếp cận chức năng để xử lý các tập hợp dữ liệu, cho phép bạn thực hiện các thao tác như lọc, ánh xạ, giảm thiểu và thu thập dữ liệu một cách dễ dàng.

Các đặc điểm chính của Stream API

  • Không thay đổi dữ liệu gốc: Stream không thay đổi dữ liệu gốc mà tạo ra một Stream mới với các phần tử đã được xử lý.
  • Sử dụng Lazy: Các thao tác trên Stream chỉ được thực hiện khi cần thiết, tức là khi có một thao tác kết thúc (terminal operation) như collect hoặc forEach.
  • Hỗ trợ các thao tác chức năng: Stream API hỗ trợ các thao tác chức năng như filter, map, reduce, collect, sorted, và nhiều thao tác khác.
  • Có thể song song hóa: Stream API hỗ trợ xử lý song song, giúp cải thiện hiệu suất khi làm việc với các tập hợp dữ liệu lớn.


Ví dụ cơ bản về Stream API
Dưới đây là một ví dụ cơ bản về cách sử dụng Stream API để lọc và ánh xạ các phần tử trong một danh sách trong lập trình java:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Nam", "Huy", "An", "Anh");
 
        // Lọc các tên bắt đầu bằng chữ 'A' và chuyển đổi chúng thành chữ hoa
        List<String> filteredNames = names.stream()
            .filter(name -> name.startsWith("A"))
            .map(String::toUpperCase)
            .collect(Collectors.toList());
 
        System.out.println(filteredNames); // Kết quả: [An, Anh]
    }
}

Làm việc với các hàm trong Java Stream API

Java Stream API là một công cụ mạnh mẽ để xử lý các tập hợp dữ liệu một cách hiệu quả và dễ đọc. Dưới đây là một số ví dụ cụ thể về cách sử dụng các hàm trong Stream của Java:

1. Tạo Stream

Bạn có thể tạo Stream từ nhiều nguồn khác nhau như Collection, Array, hoặc thậm chí là các giá trị đơn lẻ.
/ Tạo Stream từ một Collection
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> streamFromList = list.stream();
 
// Tạo Stream từ một Array
String[] array = {"a", "b", "c"};
Stream<String> streamFromArray = Arrays.stream(array);
 
// Tạo Stream từ các giá trị đơn lẻ
Stream<String> streamOfValues = Stream.of("a", "b", "c");

2. Filter

Hàm filter cho phép bạn lọc các phần tử trong Stream dựa trên một điều kiện nhất định.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evenNumbers = numbers.stream()
    .filter(n -> n % 2 == 0)
    .collect(Collectors.toList());
System.out.println(evenNumbers); // Kết quả: [2, 4, 6]

3. Map

Hàm map cho phép bạn chuyển đổi các phần tử trong Stream thành các giá trị khác.

List<String> names = Arrays.asList("Nam", "An", "Anh");
List<String> upperCaseNames = names.stream()
    .map(String::toUpperCase)
    .collect(Collectors.toList());
System.out.println(upperCaseNames); // Kết quả: [NAM, AN, ANH]

4. FlatMap

Hàm flatMap giúp bạn chuyển đổi và làm phẳng các Stream lồng nhau.
/ Tạo Stream từ một Collection
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> streamFromList = list.stream();
 
// Tạo Stream từ một Array
String[] array = {"a", "b", "c"};
Stream<String> streamFromArray = Arrays.stream(array);
 
// Tạo Stream từ các giá trị đơn lẻ
Stream<String> streamOfValues = Stream.of("a", "b", "c");

List<List<String>> listOfLists = Arrays.asList(
    Arrays.asList("a", "b"),
    Arrays.asList("c", "d"),
    Arrays.asList("e", "f")
);
 
List<String> flatList = listOfLists.stream()
    .flatMap(List::stream)
    .collect(Collectors.toList());
 
System.out.println(flatList); // Kết quả: [a, b, c, d, e, f]

5. Reduce

Hàm reduce cho phép bạn thực hiện các phép tính gộp trên các phần tử của Stream.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
    .reduce(0, Integer::sum);
 
System.out.println(sum); // Kết quả: 15

6. Collect

Hàm collect giúp bạn thu thập các phần tử của Stream vào một Collection hoặc một cấu trúc dữ liệu khác.

List<List<String>> listOfLists = Arrays.asList(
    Arrays.asList("a", "b"),
    Arrays.asList("c", "d"),
    Arrays.asList("e", "f")
);
 
List<String> flatList = listOfLists.stream()
    .flatMap(List::stream)
    .collect(Collectors.toList());
 
System.out.println(flatList); // Kết quả: [a, b, c, d, e, f]

List<String> names = Arrays.asList("John", "Jane", "Jack");
Set<String> nameSet = names.stream()
    .collect(Collectors.toSet());
System.out.println(nameSet); // Kết quả: [John, Jane, Jack]

7. Sorted

Hàm sorted cho phép bạn sắp xếp các phần tử trong Stream.

List<String> names = Arrays.asList("John", "Jane", "Jack");
List<String> sortedNames = names.stream()
    .sorted()
    .collect(Collectors.toList());
System.out.println(sortedNames); // Kết quả: [Jack, Jane, John]
Những ví dụ trên chỉ là một phần nhỏ trong số các hàm mà Stream API cung cấp. Stream API giúp bạn xử lý dữ liệu một cách hiệu quả và dễ dàng hơn, đồng thời cải thiện tính đọc và bảo trì của mã nguồn. Hy vọng qua bài viết này, Stanford đã giúp các bạn đang học lập trình java hiểu được stream và các hàm hay sử dụng của nó. Để hiểu rõ hơn các bạn có thể thực hành từng hàm một qua những ví dụ ở bài viết này sau đó áp dụng chúng vào bài toán cụ thể của mình trong lập trình java. Chúc các bạn học tập tốt !

Bạn có thể bắt đầu ngay con đường chinh phục lập trình java của mình bằng việc đăng ký tham gia khoá lập trình java tại đây: http://bit.ly/2SLPYFF. Hoặc gọi ngay cho Stanford theo hotline: 0963.723.236 - 0866.586.366 để được gọi lại tư vấn trực tiếp nhé.

==========🎬 🎬 🎬==========
☎️STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ
Hotline: 0963 723 236 - 0866 586 366
Website: https://stanford.com.vn
Facebook: https://www.facebook.com/Stanford.com.vn
Youtube: http://bit.ly/2TkKT7I

Tags: học java stream, làm việc với java stream