CodeGym
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
  • Set: HashSet và TreeSet, tính duy nhất của các phần tử

    JAVA 25 SELF
    Cấp độ 26,Bài học 3
    Trong bài giảng này, chúng ta tìm hiểu giao diện Set trong Java: nó khác gì so với List, cách đảm bảo tính duy nhất của phần tử, cách các triển khai HashSet (nhanh, không có thứ tự) và TreeSet (được sắp xếp) hoạt động, khi nào nên chọn cấu trúc nào. Chúng ta sẽ xem các điểm quan trọng về equals() và hashCode(), cách xử lý với null, ví dụ bài toán thường gặp (loại bỏ trùng lặp, kiểm tra tính duy nhất) và những lỗi phổ biến.
    Có sẵn
  • Generics: vì sao cần, cú pháp cơ bản

    JAVA 25 SELF
    Cấp độ 26,Bài học 4
    Chuyển từ các collection “thô” sang mã an toàn kiểu. Bài giảng giải thích vì sao trước khi có generics các collection dựa trên Object thường dẫn tới lỗi runtime ( ClassCastException), cách generics giải quyết điều này ở giai đoạn biên dịch, cách đọc và viết các cấu trúc như List<String>, Map<String, Integer>, “toán tử diamond” <> là gì và vì sao cần cơ chế xóa kiểu (type erasure). Ngoài ra có ví dụ với các lớp generic tự định nghĩa và phân tích những lỗi thường gặp.
    Có sẵn
  • Giao diện Collection, List, Set, Map: hệ phân cấp

    JAVA 25 SELF
    Cấp độ 27,Bài học 0
    Khám phá nền tảng của collections trong Java: giao diện Collection và các nhánh của nó List, Set, Queue/ Deque, cũng như hệ phân cấp riêng Map. Bạn sẽ biết vì sao Map không kế thừa Collection, hệ phân cấp trông như thế nào, các triển khai khác nhau ra sao, những phương thức cốt lõi là gì và khi nào nên chọn cái gì. Cuối cùng — các lỗi thường gặp và cách tránh chúng.
    Có sẵn
  • Iterable và Iterator: duyệt collection

    JAVA 25 SELF
    Cấp độ 27,Bài học 1
    Trong bài giảng này, chúng ta tìm hiểu cách làm việc với các giao diện Iterable và Iterator: phương thức iterator() làm gì, vòng lặp for-each hoạt động “đằng sau hậu trường” ra sao, khi nào và vì sao cần dùng thủ công hasNext() và next(), cách xóa phần tử an toàn bằng remove() mà không gặp ConcurrentModificationException, cũng như cách duyệt Map đúng với keySet(), values() và entrySet(). Nhiều ví dụ thực hành và các lỗi thường gặp để củng cố kiến thức.
    Có sẵn
  • Queue, Deque, Stack: làm việc với hàng đợi và ngăn xếp

    JAVA 25 SELF
    Cấp độ 27,Bài học 2
    Trong bài giảng này, chúng ta tìm hiểu hàng đợi và ngăn xếp trong Java: nguyên lý FIFO và LIFO hoạt động ra sao, sự khác nhau giữa Queue, Deque và Stack, vì sao nên chọn ArrayDeque trong các dự án hiện đại, và cách dùng an toàn các phương thức offer/ poll/ peek và push/ pop/ peek. Chúng tôi sẽ đưa ra ví dụ với LinkedList, PriorityQueue, các mini‑app như hàng đợi in và ngăn xếp undo, đồng thời phân tích các lỗi thường gặp.
    Có sẵn
  • NavigableSet/NavigableMap

    JAVA 25 SELF
    Cấp độ 27,Bài học 3
    Trong bài giảng này, chúng ta tìm hiểu các collection có thứ tự và có khả năng điều hướng của Java: NavigableSet và NavigableMap. Trên thực tế, chúng ta sẽ xem cách làm việc với các khoảng (range) thông qua subSet/ headSet/ tailSet, tìm các phần tử “gần nhất” bằng lower, floor, ceiling, higher và quản lý các đầu mút bằng pollFirst/ pollLast. Chúng ta cũng phân tích các biểu diễn đảo ngược descendingSet/ descendingMap, các view “sống” và những tình huống điển hình (lịch, ưu tiên, thang điểm). Làm hiện thực, chúng ta dùng TreeSet và TreeMap.
    Có sẵn
  • Generics wildcards

    JAVA 25 SELF
    Cấp độ 27,Bài học 4
    Trong bài giảng này, chúng ta phân tích tính bất biến của generics trong Java, các ranh giới của tham số kiểu ( extends/ super), các kiểu wildcard ? và quy tắc PECS (“Producer Extends, Consumer Super”). Xem cách viết các phương thức tổng quát với wildcard, cách cơ chế xóa kiểu (type erasure) hoạt động, các hạn chế khi dùng instanceof và mảng, cũng như thực hành với collections và Stream API. Cuối cùng — các lỗi thường gặp và cách tránh chúng.
    Có sẵn
  • Lọc các phần tử của bộ sưu tập

    JAVA 25 SELF
    Cấp độ 28,Bài học 0
    Trong bài giảng này, chúng ta tìm hiểu thực hành lọc bộ sưu tập trong Java: cách tiếp cận mệnh lệnh qua vòng lặp for, xóa an toàn trong khi lặp bằng Iterator và phương thức remove(), cũng như giải pháp hiện đại, súc tích removeIf (Java 8+). Chúng ta sẽ thảo luận vì sao xuất hiện ConcurrentModificationException, khi nào nên tạo danh sách mới, và những lỗi điển hình thường gặp khi viết điều kiện lọc.
    Có sẵn
  • Chuyển đổi collection

    JAVA 25 SELF
    Cấp độ 28,Bài học 1
    Trong bài giảng này, chúng ta xem cách thực hiện chuyển đổi collection theo kiểu mệnh lệnh (imperative): từ List<String> tạo List<Integer> (ví dụ: độ dài chuỗi), cách trích xuất field từ các object của mô hình domain ( Product → tên/giá), cách “làm phẳng” (flatten) collection lồng nhau bằng addAll() hoặc vòng lặp lồng nhau, cũng như cách kết hợp lọc với chuyển đổi bằng if và các phương thức như startsWith. Cuối cùng, ta xét các lỗi điển hình: sửa đổi collection gốc, ép kiểu sai ( ClassCastException) và vấn đề hiệu năng.
    Có sẵn
  • Xóa phần tử một cách an toàn

    JAVA 25 SELF
    Cấp độ 28,Bài học 2
    Trong thực tế, việc xóa phần tử khỏi collection thường dẫn đến ConcurrentModificationException. Trong bài giảng này, chúng ta sẽ phân tích tại sao điều đó xảy ra khi duyệt bằng for-each, cách xóa an toàn với Iterator.remove(), ListIterator hữu ích ra sao, khi nào nên chọn removeIf (Java 8+) và cách làm việc đúng với Map. Cuối cùng — các mẹo thực hành và lỗi thường gặp.
    Có sẵn
  • EnumSet/EnumMap

    JAVA 25 SELF
    Cấp độ 28,Bài học 3
    Trong bài giảng này, chúng ta tìm hiểu các bộ sưu tập chuyên dụng cho enum — EnumSet và EnumMap trong gói java.util: cách chúng hoạt động bên trong (mặt nạ bit và đánh chỉ số theo ordinal), tại sao chúng nhanh và gọn hơn HashSet/ HashMap, dùng ở đâu (cờ, bảng ánh xạ, máy trạng thái hữu hạn), các cạm bẫy liên quan đến thay đổi enum và tuần tự hóa, cũng như bộ best practices và các lỗi điển hình với ví dụ mã minh họa.
    Có sẵn
  • LinkedHashSet/LinkedHashMap

    JAVA 25 SELF
    Cấp độ 28,Bài học 4
    Trong bài giảng này, chúng ta xem xét các collection ghi nhớ thứ tự: LinkedHashSet và LinkedHashMap. Bạn sẽ biết cách chúng duy trì thứ tự chèn (insertion order) và thứ tự truy cập (access order), cách tạo LRU cache chỉ trong vài dòng bằng cách ghi đè removeEldestEntry, chi phí bộ nhớ và tốc độ so với HashSet/ HashMap, khi nào cần thứ tự xác định để có bài kiểm thử và báo cáo ổn định, cũng như vì sao đối với hàng đợi/ngăn xếp thì ArrayDeque tốt hơn LinkedList. Cuối cùng — các lỗi điển hình và cách tránh.
    Có sẵn
  • 1
  • ...
  • 12
  • 13
  • 14
  • 15
  • 16
  • ...
  • 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