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
  • Collector và Spliterator tùy chỉnh

    JAVA 25 SELF
    Cấp độ 33,Bài học 4
    Trong bài giảng này, chúng ta phân tích cách viết collector tùy chỉnh cho Stream API thông qua Collector và khi nào điều đó thực sự hợp lý, đồng thời cách hiện thực Spliterator của riêng bạn để duyệt dữ liệu tuần tự và song song hiệu quả. Chúng ta sẽ xem xét từng bước các thành phần của collector ( supplier, accumulator, combiner, finisher, characteristics), các ví dụ cho multi-map và top-N, các chiến lược trySplit, cũng như cách thiết lập đúng các đặc tính ( ORDERED, SIZED, SUBSIZED v.v.).
    Có sẵn
  • List.of, Set.of, Map.of — collection bất biến

    JAVA 25 SELF
    Cấp độ 34,Bài học 0
    Trong bài giảng này, chúng ta tìm hiểu các collection bất biến trong Java 9+: các phương thức factory List.of, Set.of, Map.of và Map.ofEntries. So sánh chúng với wrapper Collections.unmodifiableList, thảo luận về các hạn chế (cấm sửa đổi, cấm null, cấm trùng lặp đối với Set và khóa của Map), thứ tự phần tử và hiệu năng. Xem giới hạn 10 cặp cho Map.of và các ngoại lệ thường gặp: UnsupportedOperationException, NullPointerException, IllegalArgumentException. Thêm các ví dụ thực tế về việc những collection này giúp đơn giản hóa thiết kế và tăng an toàn luồng khi đọc.
    Có sẵn
  • Map.copyOf, Set.copyOf và các tiện ích khác

    JAVA 25 SELF
    Cấp độ 34,Bài học 1
    Trong bài giảng này, chúng ta phân tích các bản sao bất biến của collections xuất hiện trong Java 10: List.copyOf, Set.copyOf và Map.copyOf. Bạn sẽ biết chúng khác gì so với các lớp bọc Collections.unmodifiable*, các giới hạn áp dụng (cấm null, tính bất biến), khi nào trả về cùng một đối tượng và vì sao không nên dựa vào hiện thực cụ thể. Trình bày các kịch bản áp dụng thực tế và lỗi phổ biến, bao gồm nhầm lẫn với Map.of và Map.ofEntries.
    Có sẵn
  • Bộ sưu tập CopyOnWrite, lớp bao bọc không thể sửa đổi

    JAVA 25 SELF
    Cấp độ 34,Bài học 2
    Trong bài giảng này, chúng ta xem xét hai cách tiếp cận để “bảo vệ” các bộ sưu tập: các lớp bao bọc không thể sửa đổi từ Collections.unmodifiable* và các phương thức tạo List.of/ Set.of/ Map.of, cũng như các cấu trúc an toàn luồng CopyOnWriteArrayList và CopyOnWriteArraySet trong gói java.util.concurrent. Chúng ta sẽ hiểu lớp bao bọc khác gì so với tính bất biến thực sự, khi nào nên dùng các cấu trúc CopyOnWrite, và những lỗi thường gặp trong thực tế.
    Có sẵn
  • Bộ sưu tập mutable vs immutable: khác biệt và cách áp dụng

    JAVA 25 SELF
    Cấp độ 34,Bài học 3
    Trong bài giảng này, chúng ta phân tích sự khác nhau giữa các bộ sưu tập có thể thay đổi (mutable) và bất biến (immutable) trong Java: khi nào chọn ArrayList/ HashSet và khi nào — các collection tạo sẵn của Java 9+ ( List.of, Set.of, Map.of) và các bản sao qua copyOf. Sẽ thảo luận về tính an toàn, an toàn luồng, sự tiện lợi khi gỡ lỗi, những cạm bẫy của lớp bọc Collections.unmodifiableList và các ví dụ thực tế về cách sử dụng, cũng như các lỗi thường gặp và cách tránh chúng.
    Có sẵn
  • Các bộ sưu tập mới: SequencedCollection, SequencedSet, SequencedMap

    JAVA 25 SELF
    Cấp độ 34,Bài học 4
    Trong Java 21 đã xuất hiện các interface cho các collection có thứ tự — SequencedCollection, SequencedSet và SequencedMap. Chúng bổ sung một hợp đồng thống nhất để làm việc với thứ tự phần tử: truy cập nhanh phần tử đầu/cuối và đảo ngược collection thông qua reversed(). Trong bài giảng này, chúng ta sẽ tìm hiểu những collection chuẩn nào đã triển khai chúng, những phương thức mới xuất hiện, cách áp dụng vào mã thực tế, cũng như các lỗi thường gặp và những điểm cần lưu ý khi sử dụng.
    Có sẵn
  • Cơ bản về java.io và java.nio: khác biệt, tiến hóa của API

    JAVA 25 SELF
    Cấp độ 35,Bài học 0
    Bài giảng này — hướng dẫn ngắn gọn về sự tiến hóa của I/O tệp trong Java: từ gói “cổ điển” java.io với các lớp File, các luồng FileInputStream/ FileOutputStream và các lớp ký tự Reader/ Writer đến java.nio.file (NIO.2) hiện đại với Path, Files và FileSystem. Chúng ta sẽ phân tích các cách tiếp cận khác nhau, nơi I/O bất đồng bộ phát huy lợi thế, cách di trú an toàn ( File . toPath() ⇄ Path . toFile()), đồng thời xem các ví dụ thực tế, ghi nhớ chọn API và những lỗi thường gặp.
    Có sẵn
  • Các lớp File, Path, Files: tổng quan, tạo đối tượng

    JAVA 25 SELF
    Cấp độ 35,Bài học 1
    Trong bài giảng này, chúng ta tìm hiểu ba thực thể then chốt của file API Java: lớp mang tính lịch sử File, trừu tượng đường dẫn hiện đại Path từ NIO.2 và lớp tiện ích “dao đa năng” Files. Trong thực hành, chúng ta sẽ xem cách tạo đối tượng, chuyển đổi File ↔ Path, ghép đường dẫn an toàn qua resolve, lấy đường dẫn tương đối qua relativize, chuẩn hóa với normalize và thực hiện các thao tác như Files.exists, Files.copy, Files.move, Files.readAllLines/ Files.write. Kết quả — bạn sẽ hiểu rõ khi nào dùng từng cách tiếp cận và những lỗi thường gặp nhất.
    Có sẵn
  • Đọc và ghi tệp: thao tác cơ bản

    JAVA 25 SELF
    Cấp độ 35,Bài học 2
    Trong bài giảng này, chúng ta xem các cách nhanh để làm việc với tệp thông qua tiện ích java.nio.file.Files: đọc toàn bộ tệp ( readAllBytes, readAllLines) và ghi dữ liệu ( write) với bộ mã được chỉ định rõ StandardCharsets.UTF_8. Sẽ bàn về xử lý ngoại lệ IOException, đưa ra ví dụ thực tế, thảo luận khi nào cần các API theo kiểu stream ( BufferedReader, BufferedWriter) và phân tích các lỗi thường gặp.
    Có sẵn
  • Chế độ làm việc với tệp: đọc, ghi, bổ sung (append)

    JAVA 25 SELF
    Cấp độ 35,Bài học 3
    Trong bài giảng này, chúng ta tìm hiểu các chế độ làm việc với tệp trong Java: ghi đè và bổ sung, kết hợp các tùy chọn StandardOpenOption (ví dụ, APPEND, CREATE, TRUNCATE_EXISTING, CREATE_NEW), làm việc với văn bản và byte thông qua Files.write()/ Files.readAllBytes(), khi nào nên chọn stream ( BufferedReader/ BufferedWriter) và cách xử lý ngoại lệ đúng cách ( IOException và các loại khác). Nhiều ví dụ thực hành và phân tích các lỗi thường gặp.
    Có sẵn
  • Làm việc với thư mục: tạo, xóa, xem nội dung

    JAVA 25 SELF
    Cấp độ 35,Bài học 4
    Bài giảng thực hành về làm việc với hệ thống tệp thông qua java.nio.file: tạo thư mục bằng Files.createDirectory và Files.createDirectories, xóa bằng Files.delete và Files.deleteIfExists, liệt kê nội dung với Files.list, phân tích xóa đệ quy với Files.walkFileTree. Các ví dụ từng bước, trình quản lý tệp mini và mục về lỗi thường gặp sẽ giúp bạn tự tin làm việc với thư mục trên mọi HĐH.
    Có sẵn
  • BufferedReader, BufferedWriter: bộ đệm và ưu điểm

    JAVA 25 SELF
    Cấp độ 36,Bài học 0
    Vì sao đọc và ghi tệp bằng “muỗng cà phê” lại tốn kém: cùng xem cách bộ đệm (buffering) tăng tốc I/O văn bản trong Java. Chúng ta sẽ xem BufferedReader và BufferedWriter hoạt động phía trên FileReader/ FileWriter như thế nào, dùng đọc theo dòng qua readLine(), ghi và xuống dòng qua write()/ newLine(), ép xả flush(), đặt kích thước bộ đệm và xử lý mã hóa qua InputStreamReader/ OutputStreamWriter. Khi nào nên dùng bộ đệm, khi nào không — và những lỗi thường gặp nhất.
    Có sẵn
  • 1
  • ...
  • 15
  • 16
  • 17
  • 18
  • 19
  • ...
  • 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