CodeGym
Khuyến mãi
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
  • Sử dụng lambda trong collections và streams

    JAVA 25 SELF
    Cấp độ 48,Bài học 1
    Thực hành biểu thức lambda trong collections và Stream API: cách thay thế lớp ẩn danh bằng lambda gọn nhẹ, dùng các phương thức của collections ( forEach, removeIf, sort, replaceAll) và dựng pipeline xử lý dữ liệu ( stream → filter → map → sorted → collect). So sánh với lớp ẩn danh, bàn về biến “ final hiệu quả” (effectively final), đưa ra bảng thao tác chính và phân tích lỗi thường gặp.
    Có sẵn
  • Ưu điểm và nhược điểm của biểu thức lambda

    JAVA 25 SELF
    Cấp độ 48,Bài học 2
    Trong bài giảng này, chúng ta phân tích lý do Java có biểu thức lambda: ngắn gọn và dễ đọc, truyền hành vi như tham số, tích hợp với collections và Stream API ( filter, map, forEach), bắt các biến “effectively” final và cách ghi callback thuận tiện bằng toán tử ->. Đồng thời xem xét các “cạm bẫy”: gỡ lỗi các chuỗi dài, sự mơ hồ khi overload ( Runnable vs Callable), hạn chế của closure, tuần tự hóa (serialization) và lambda lồng nhau. Cuối cùng — khuyến nghị thực hành về khi nào nên dùng lambda và phân tích các lỗi thường gặp.
    Có sẵn
  • Closures trong Java: các đặc điểm

    JAVA 25 SELF
    Cấp độ 48,Bài học 3
    Trong bài giảng này, chúng ta tìm hiểu closure là gì và nó hoạt động thế nào trong Java: cách lambda và lớp ẩn danh “bắt” (capture) các biến bên ngoài, vì sao biến cục bộ phải là final hoặc final hiệu quả, sự khác nhau giữa việc bắt biến cục bộ và truy cập vào các trường của lớp, và this cư xử ra sao trong lambda và lớp ẩn danh. Chúng ta sẽ trình bày các factory hàm với IntSupplier, phân tích hiện thực bên trong của capture và các lỗi thường gặp (ví dụ, thông báo của trình biên dịch Variable used in lambda expression should be final or effectively final).
    Có sẵn
  • Lớp ẩn danh: khác gì so với lambda, ví dụ

    JAVA 25 SELF
    Cấp độ 48,Bài học 4
    Trong bài giảng này, chúng ta tìm hiểu lớp ẩn danh trong Java là gì và nó khác biểu thức lambda ở điểm nào: cú pháp, khả năng (các trường, phương thức bổ sung, ghi đè toString/ equals), phạm vi và hành vi của this, việc bắt biến (chỉ final/“effectively final”). Có các ví dụ thực tế với Runnable, Comparator, Predicate, cùng khuyến nghị — khi nào chọn lambda và khi nào chọn lớp ẩn danh.
    Có sẵn
  • Các interface hàm: Predicate, Consumer, Supplier, Function

    JAVA 25 SELF
    Cấp độ 49,Bài học 0
    Phân tích các interface hàm chủ chốt trong gói java.util.function: Predicate, Consumer, Supplier, Function — chúng nhận/trả về gì và được dùng ở đâu trong Stream API ( filter, map, forEach, generate). Ôn lại quy tắc “chỉ đúng một phương thức trừu tượng” và annotation @FunctionalInterface, viết lambda, so sánh với lớp ẩn danh, luyện tập với ví dụ lớp User và phân tích các lỗi điển hình khi chọn giữa Predicate/ Function, v.v.
    Có sẵn
  • Kết hợp hàm: compose, andThen

    JAVA 25 SELF
    Cấp độ 49,Bài học 1
    Bài giảng này nói về cách ghép các pipeline chuyển đổi từ những hàm nhỏ bằng Function và các phương thức compose, andThen. Chúng ta sẽ làm rõ thứ tự áp dụng, khả năng tương thích kiểu, ví dụ với Predicate ( and, or, negate), Consumer ( andThen), xây dựng các pipeline thực tiễn và bàn về lỗi thường gặp: nhầm thứ tự ( f.compose(g) vs f.andThen(g)), kiểu không khớp và “spaghetti” do xâu chuỗi quá mức. Bạn sẽ học cách dùng apply, test, accept và xây dựng các phép biến đổi dễ đọc, tái sử dụng.
    Có sẵn
  • Truyền hàm như tham số: ví dụ

    JAVA 25 SELF
    Cấp độ 49,Bài học 2
    Phần mở đầu thực hành về truyền hành vi trong Java: cách sử dụng biểu thức lambda ( ->) và tham chiếu phương thức ( ::) cùng với Stream API và các bộ sưu tập. Chúng ta sẽ xem các functional interface chuẩn trong java.util.function — Comparator, Predicate, Function, Consumer, Supplier — học cách viết các phương thức tổng quát, nhận hành vi như tham số và tránh các lỗi thường gặp. Luyện tập với các ví dụ dùng Stream, Optional và các tiện ích tự viết để xử lý danh sách.
    Có sẵn
  • Phong cách hàm với Stream API

    JAVA 25 SELF
    Cấp độ 49,Bài học 3
    Chuyển từ các vòng lặp mệnh lệnh sang các pipeline xử lý dữ liệu mang tính khai báo với Stream API: phân tích các phép toán trung gian và kết thúc, cơ chế lazy evaluation, gom kết quả qua toList()/ collect, các thao tác then chốt map, filter, sorted, flatMap, reduce, cũng như các phép kiểm tra anyMatch/ allMatch/ noneMatch. So sánh phong cách mệnh lệnh và phong cách hàm, xem các ví dụ thực tế và lỗi thường gặp, bao gồm việc dùng forEach không đúng chỗ khi thu thập collection và parallelStream() quá sớm.
    Có sẵn
  • Phân tích lỗi trong lập trình hàm

    JAVA 25 SELF
    Cấp độ 49,Bài học 4
    10 lỗi phổ biến nhất khi làm việc với lambda và Stream API trong Java: bắt biến (capture) ( final/ effectively final), hành vi của this trong lambda, side effects và song song ( parallelStream()), suy luận kiểu và generics, làm việc với null và Optional, hợp thành hàm ( compose/ andThen), cũng như checked exceptions (ví dụ, IOException). Chúng tôi trình bày các cách làm an toàn: lọc với Objects::nonNull, các thao tác kết thúc ( sum(), collect(...)), các collection an toàn cho đa luồng và tách nhỏ các chuỗi dài.
    Có sẵn
  • Trình lắng nghe (Listeners) và các interface sự kiện

    JAVA 25 SELF
    Cấp độ 50,Bài học 0
    Cách mô hình sự kiện trong Java hoạt động: nguồn phát sinh sự kiện, và các trình lắng nghe đã đăng ký sẽ nhận thông báo và phản hồi. Chúng ta sẽ phân tích các interface lắng nghe chủ chốt trong Swing — ActionListener, MouseListener, KeyListener, ChangeListener, DocumentListener — và minh họa cách đăng ký handler thông qua addActionListener và triển khai phương thức actionPerformed. Thực hành gắn listener vào JButton/ JFrame, so sánh lớp ẩn danh và biểu thức lambda, thảo luận lỗi thường gặp và các mẹo thực hành.
    Có sẵn
  • Sự kiện trong Swing và AWT: cơ bản, ví dụ

    JAVA 25 SELF
    Cấp độ 50,Bài học 1
    Giới thiệu thực hành ngắn gọn về mô hình sự kiện AWT/ Swing: tạo nút JButton, đăng ký listener qua addActionListener, xử lý trong actionPerformed. Phân tích lớp ẩn danh và biểu thức lambda, các listener phổ biến ( MouseListener/ MouseAdapter, KeyAdapter, DocumentListener), viết mini‑ứng dụng dựa trên JFrame, JButton, JLabel, xem trình tự gọi và các lỗi thường gặp (làm việc nặng trong handler, tính final của biến trong lambda, quên addActionListener, gỡ listener, sử dụng SwingWorker).
    Có sẵn
  • Tạo và xử lý sự kiện tự định nghĩa

    JAVA 25 SELF
    Cấp độ 50,Bài học 2
    Trong bài giảng này, chúng ta tìm hiểu cách thiết kế sự kiện tự định nghĩa trong Java: tạo lớp sự kiện dựa trên java.util.EventObject, mô tả giao diện listener qua java.util.EventListener, thêm cơ chế đăng ký/hủy đăng ký ( add...Listener/ remove...Listener) và thông báo ( fire...). Xem thực hành với các ví dụ DataLoader và bộ đếm, bàn về handler bằng lớp ẩn danh và biểu thức lambda, đồng thời phân tích các lỗi phổ biến (ngoại lệ trong listener, rò rỉ bộ nhớ, ConcurrentModificationException).
    Có sẵn
  • 1
  • ...
  • 21
  • 22
  • 23
  • 24
  • 25
  • ...
  • 30
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