CodeGym
AI Academy
Khuyến mãi
CodeGym University
Học tập
Khóa học
Bài tập
Khảo sát & Bài kiểm tra
Trò chơi
Trợ giúp
Lịch
Cộng đồng
Người dùng
Diễn đàn
Trò chuyện
Bài viết
Câu chuyện thành công
Hoạt động
Đánh giá
Gói đăng ký
Chủ đề sáng

Bài học

  • Đánh giá
  • Về chúng tôi
Bắt đầu
Bắt đầu học
Bắt đầu học ngay
  • Tiến độ của tôi
  • Khóa học
  • Bản đồ Quest
  • Bài học
  • Các phương thức flatMap và mapMulti

    JAVA 25 SELF
    Cấp độ 32,Bài học 0
    Trong bài giảng này, chúng ta sẽ phân tích sự khác nhau giữa phép biến đổi dữ liệu bằng map, phép biến đổi “làm phẳng” bằng flatMap và biến thể hiệu quả hơn từ Java 16+ — mapMulti. Qua các ví dụ thực hành, bạn sẽ thấy cách giải nén các bộ sưu tập lồng nhau thành Stream<String> thay vì Stream<Stream<String>>, cách làm việc với Optional thông qua stream(), cũng như khi nào nên chọn mapMulti vì hiệu năng mà không tạo các luồng trung gian.
    Có sẵn
  • Phương thức join, concat: hợp nhất stream

    JAVA 25 SELF
    Cấp độ 32,Bài học 1
    Trong bài giảng này, chúng ta phân tích các cách hợp nhất dữ liệu trong Stream API: phương thức tĩnh Stream.concat cho hai stream, kết hợp Stream.of + flatMap cho số lượng stream tùy ý, cũng như collector Collectors.joining để ghép các phần tử thành một chuỗi. Chúng ta sẽ nói về tính lazy, tính dùng-một-lần của stream, việc giữ nguyên thứ tự và các lỗi thường gặp (tái sử dụng stream, stream vô hạn, joining cho non-String) — kèm các ví dụ trực quan.
    Có sẵn
  • Các phép toán union, intersection, difference

    JAVA 25 SELF
    Cấp độ 32,Bài học 2
    Trong bài giảng này, chúng ta xem xét các phép toán điển hình trên tập hợp trong Java: hợp ( union), giao ( intersection) và hiệu ( difference) dựa trên interface Set và Stream API. Trình bày ví dụ thực tiễn với Stream.concat, Stream.of + flatMap, các phương án thay thế qua retainAll/ removeAll, cùng các lưu ý quan trọng về equals/ hashCode, hiệu năng và lỗi phổ biến.
    Có sẵn
  • Zip (zip), tạo luồng (iterate, generate)

    JAVA 25 SELF
    Cấp độ 32,Bài học 3
    Trong bài giảng này, chúng ta sẽ tìm hiểu zip là gì và vì sao nó không có trong Stream API tiêu chuẩn (trước Java 22), học cách “ghép cặp” các collection theo chỉ số bằng IntStream.range, cũng như tạo luồng “tức thời” bằng Stream.iterate và Stream.generate. Ví dụ, trực quan hóa và các lỗi thường gặp sẽ giúp bạn tự tin áp dụng việc sinh luồng và zip trong bài toán thực tế.
    Có sẵn
  • Phân tích các lỗi điển hình khi làm việc với Stream

    JAVA 25 SELF
    Cấp độ 32,Bài học 4
    Hướng dẫn chi tiết về các lỗi thường gặp khi làm việc với Stream API trong Java: bản chất dùng một lần của stream và việc gọi lặp lại các toán tử kết thúc ( collect(), forEach(), count()), thay đổi collection trong khi duyệt, quên limit() với các stream vô hạn ( iterate, generate), xử lý null và làm việc với Optional thông qua flatMap(Optional::stream), giữ nguyên thứ tự với forEachOrdered(), các phép toán tập hợp hiệu quả với Set, đóng tài nguyên đúng cách ( Files.lines + try-with-resources), thận trọng với parallelStream() và nguyên tắc “khi chưa có toán tử kết thúc — không có gì được thực thi”. Mọi vấn đề đều kèm ví dụ dễ hiểu và cách khắc phục.
    Có sẵn
Học
  • Đăng ký
  • Khóa học Java
  • Trợ giúp bài tập
  • Bảng giá
  • Cú pháp Java
Cộng đồng
  • Người dùng
  • Bài viết
  • Diễn đàn
  • Trò chuyện
  • Câu chuyện thành công
  • Hoạt động
  • Chương trình giới thiệu
Công ty
  • Về chúng tôi
  • Liên hệ
  • Đánh giá
  • Phòng báo chí
  • CodeGym cho EDU
  • Câu hỏi thường gặp
  • Hỗ trợ
CodeGymCodeGym là một khóa học trực tuyến để học lập trình Java từ đầu. Khóa học này là cách hoàn hảo để nắm vững Java cho người mới bắt đầu. Nó chứa 1200+ bài tập với kiểm tra ngay lập tức và phạm vi lý thuyết cơ bản cần thiết về Java. Để giúp bạn thành công trong học tập, chúng tôi đã triển khai một bộ tính năng tạo động lực: bài kiểm tra, dự án lập trình, nội dung về phương pháp học hiệu quả, và hỗ trợ sự nghiệp lập trình viên Java.
Theo dõi chúng tôi
Ngôn ngữ giao diện
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский
Vietnamese
"Lập trình viên được tạo nên, không sinh ra" © 2026 CodeGym
MastercardVisa
"Lập trình viên được tạo nên, không sinh ra" © 2026 CodeGym