Generics & Collections
Generics, type erasure, wildcard (? extends, ? super), PECS rule, Collections framework (List, Set, Map), khi nào chọn ArrayList vs LinkedList vs HashMap vs TreeMap.
Nội dung
Danh sách bài học
- 01~12 phút
Generics cơ bản — class và method nhận kiểu làm tham số
Vì sao cần generics, cú pháp class/method generic, type parameter T, bounded type parameter (T extends Comparable), và ví dụ tự viết generic collection đơn giản.
- 02~12 phút
Type erasure — bản chất thực thi của generics Java
Cơ chế Type Erasure xóa tham số kiểu ở bytecode, cơ chế sinh Bridge Method, các hạn chế kỹ thuật và giải pháp Type Token Class<T> trong Java.
- 03~12 phút
Wildcard `? extends`, `? super` — PECS rule
Invariance của generics, upper bound wildcard, lower bound wildcard, rule PECS (Producer Extends Consumer Super) và unbounded wildcard List<?>.
- 04~12 phút
List và Queue — ArrayList, ArrayDeque, PriorityQueue
Memory layout của ArrayList vs LinkedList, circular buffer của ArrayDeque và binary heap của PriorityQueue trong quản lý ấn phẩm thư viện.
- 05~12 phút
Map và Set — HashMap, TreeMap, HashSet
Cơ chế bucket, chaining và treeify của HashMap, red-black tree của TreeMap và cơ chế dựng Set trên nền Map trong quản lý ấn phẩm thư viện.
- 06~12 phút
Iterator, fail-fast và ConcurrentModificationException
Cơ chế modCount và expectedModCount trong ArrayList, nguyên nhân crash của for-each, 4 cách remove an toàn và bản chất fail-fast trong Java.
- 07~12 phút
Comparator và Comparable — thứ tự sắp xếp và hợp đồng so sánh
Hợp đồng compareTo và compare, bẫy tràn số phép trừ, tính nhất quán với equals trong TreeSet và kỹ thuật chaining Comparator trong quản lý ấn phẩm.
- 08~12 phút
Immutable Collections — List.of và unmodifiableList
So sánh List.of, List.copyOf và unmodifiableList, cơ chế shallow immutability và defensive copy pattern trong hệ thống quản lý ấn phẩm thư viện.
- 09~12 phút
Bounded Types và Generic Invariance trong Java
Upper bounded types, multiple bounds, generic invariance vs array covariance và cơ chế type erasure trong hệ thống quản lý ấn phẩm thư viện.
- 10~30 phút
Mini-challenge: LRU Cache generic với LinkedHashMap
Thiết kế generic LruCache<K, V> dựa trên LinkedHashMap, xử lý thread-safe bằng ReentrantLock và kiểm thử đa luồng trong quản lý ấn phẩm thư viện.