Java Collection Framework
́ ̀ ̉
I. Tông quat vê Java Collection Framework
́
́ ́ Cac Collection (Collection, Set, List, Map, ArrayList, Vector, Hashtable,
ượ ế ộ ̣ c đăt trong goi java.util. JCF à m t ki n
ễ ợ Hashset, HashMap). Cac collection đ
trúc h p nh t đ bi u di n và thao tác trên các collection.
ấ ể ể
̀ ̀ ́ ̉
1. Cac thanh phân cua Java Collection
(cid:0) ể ệ ấ ủ ể ế Interfaces: Là các giao ti p th hi n tính ch t c a các ki u collection
ư
khác nhau nh List, Set, Map.
(cid:0) ẵ ượ ớ ặ Implementations: Là các l p collection có s n đ c cài đ t các collection
interfaces.
ụ ắ ể ử ng th c tĩnh đ x lý trên collection, ví d : s p
ứ
ấ
(cid:0) Algorithms: Là các ph
ế
x p danh sách, tìm ph n t
ươ
ầ ử ớ
l n nh t...
ộ ố ợ ủ
2. M t s l
ậ i ích c a Collections Framework
ờ
ườ ươ
ễ ở ộ
ệ ử ụ ế ươ
(cid:0) Gi m th i gian l p trình
ả
(cid:0) Tăng c
ệ
ng hi u năng ch
ng trình
(cid:0) D m r ng các collection m i
ớ
(cid:0) Khuy n khích vi c s d ng l
ạ
i mã ch ng trình
́ ́ ́
3. Cac thao tac chinh trên collection
ầ ử ư ấ Collection cung c p các thao tác chính nh thêm/xoá/tìm ph n t ... boolean
add(Object element);
(cid:0) boolean add(Object element);
(cid:0) boolean remove(Object element);
(cid:0) boolean contains(Object element);
(cid:0) int size();
(cid:0) boolean isEmpty();
(cid:0) void clear();
(cid:0) Object[] toArray();
ặ
ế ớ ố ổ N u l p cài đ t Collection không mu n h tr các thao tác làm thay đ i
ư ạ ệ ỗ ợ
ể Unsupporteds
collection nh add, remove, clear... nó có th tung ra ngo i l
OperationException.
́ ̀ ́ ̀ ̣
II. Chi tiêt vê cac cai đăt (implements) collection
1. List
́
̀
̀
́
ư
̣ ấ
̣ nó cung c p thêm các
ộ ng th c đ x lý collection ki u danh sách (Danh sách là m t collection
ể
ỉ ố ứ ể ử
ầ ử ượ ế
đ
c x p theo ch s ).
̀
ươ ơ ̣ ̉ ̣ ̣ ng trinh đ n gian nhât minh hoa cho viêc s dung danh
Sau đây la môt ch
́ ̣ ử
́ ́
́ ́ ́ ̀ ̀ ́ ́ ̣ ̣
List la môt interface dung ch a danh sach liên tuc,
ươ
ph
ớ
v i các ph n t
̀
́
sach băng cach dung giao diên List, chu y cach khai bao môt biên danh sach:
List list = new ArrayList();
1.1. ArrayList
ộ ấ ợ ủ
ệ ả ả ị ầ ử i c a vi c dùng m ng là ph i xác đ nh tr ướ ố ượ
c s l ng ph n t
M t b t l
trong m ng:ả
ế ướ ẽ ẫ ế ế ả ỏ N u khai báo kích th ộ
c m ng quá nh thì s d n đ n thi u b
nh . ớ
ế ạ ớ ộ
N u khai báo quá l n thì l
ầ ử
Các ph n t
ắ ớ
i lãng phí b nh .
ả
ượ ể ộ ể ữ ệ
trong m ng ph i có cùng ki u d li u.
c đi m này (ArrayList là m t ki u c nh
ộ ả
ụ ượ
ầ ử ỡ ả ẽ ự ả ể
ượ thêm vào v t quá kích c m ng, m ng s t
ỡ ArrayList đã kh c ph c đ
ế
ả
m ng đ ng. N u các ph n t
ộ
đ ng tăng kích c ).
ươ ả ạ ộ ̣ ng trình qu n lý nhân viên t i m t phòng ban nào đó trong
Vi du 1: Ch
ộ ́
m t công ty:
ố ượ ể ổ
S l
ng nhân viên trong phòng ban có th thay đ i.
ướ ụ ả
Kích th
ử ụ
c không c đ nh.(không s d ng m ng trong ví d này).
ố ị
ẽ ử ụ Thay vào đó ta s s d ng ArrayList.
̣ ̉
1.1.1.
ả
ố ượ Đăc điêm:
ộ
Qu n lý m t dãy các đ i t ng.
ể ả ướ ầ Có th tăng, gi m kích th c theo nhu c u.
ươ ứ ườ ấ
Cung c p các ph ng th c cho các thao tác thông th ng: chèn, xoá
ầ ử ,...
ph n t
ừ ở
ố ượ ể ng có ki u T T java 5.0 tr đi ArrayList là class generic
ậ
ArrayList ; // T p các đ i t
́ ̀ ́ ơ ơ
1.1.2. S đô l p ArrayList trong goi java.util.*
́
1.1.3. Khai bao ArrayList
ArrayList v = new ArrayList ();
ị ể
ArrayList : Đ nh ki u cho danh sách ngay khi khai báo
ế bi n danh sách.
̀ ̃ ́ ́ ư ̉ ̣ ử
́ ́ ̀ ̀ ̀ ́ ́
ơ ̣ ̣ ̣ ̀
L u ýư : Trên chi la môt trong nh ng cach khai bao thông th
ươ
ng hay s
́
dung nhât. Thât ra l p ArrayList con nhiêu ham thiêt lâp co tham sô.
ả
́ ươ ́
ư ̣
ng th c trong ArrayList
ệ ướ ấ ờ ủ
c hi n th i c a ArrayList
̣ // khai báo 1 danh sách m ng các string;
Ví dụ: ArrayList str = new ArrayList < String >();
1.1.4. Môt sô ph
int size(); // L y kích th
́
Vi du:
ầ ử ấ ộ ̉ ̣ trong ArrayList theo chi muc
̣ Object get(arg0); // L y m t ph n t
́
Vi du:
ầ ử vào ArrayList;
̣ bool add(arg0); // Thêm ph n t
́
Vi du:
̣ ̣ ̉
̣ ́
́
bool remove(); // Xoa item tai môt chi sô
́
Vi du:
1.2. LinkedList
̣ ̉
ề ầ ố
ỗ ợ
ớ ử ệ ế ả ộ ớ
1.2.1. Đăc điêm
ế
Danh sách liên k t 2 chi u. H tr thao tác trên đ u và cu i danh sách.
t ki m b nh so v i m ng trong các bài toán x lý
LinkedList giúp ti
danh sách.
ầ ả ộ ồ Khi chèn/xoá m t node trên LinkedList, không ph i dãn/d n các ph n
ả
ử ư
t
ệ ả ầ ự
.
nh trên m ng.
ậ
̀ ́ ́ ơ ơ Vi c truy nh p trên LinkedList luôn ph i tu n t
1.2.2. S đô l p LinkedList trong goi java.util.*
́
1.2.3. Khai bao ArrayList
LinkedList< TypeObject> list = new LinkedList();
ị ể
LinkedList< TypeObject>: Đ nh ki u cho danh sách ngay khi khai báo
ế
̣
ả bi n danh sách.
́
Vi du:
// khai báo 1 danh sách m ng các string;
́ ươ ̣ LinkedList list = new LinkedList();
́
ư
1.2.4. Môt sô ph ng th c trong LinkedList
ươ
ươ
ng pháp mà nó k th a, l p
ủ
ị
ậ
ủ
ộ ố
ế ừ ớ LinkedList đ nh nghĩa m t s
Ngoài các ph
ể
ữ
ng pháp h u ích c a riêng c a mình đ thao tác và truy c p vào danh sách.
ầ ử
ể
vào đ u danh sách, s d ng
ử ụ addFirst (); đ ể
đ k t thúc, s d ng
ph
To add elements to the start of the list, use addFirst( ) ; to add elements to the end,
ầ
use addLast( ) . Đ thêm ph n t
ử ụ addLast ()...
ế ố ể ế
thêm các y u t
̣ ́
Vi du:
́
́ể
ử
ử
̣ ̉ ̣
ầ
Đ lây item đ u tiên, s dung
getFirst (), item cuôi mang, s dung
getLast( ),
́
̣ ử
̉ ̣
lây item theo chi muc s dung
get(int index) .
̣
́
Vi du:
́
́
ể
ể
ầ
̉ ̉ ̉
Đ xoa item đ u tiên cua mang, s d ng
ử ụ string removeFirst(); đ xoa bo
́
̀
ầ ử ố
̉ ̣
ph n t
cu i cùng, g i
ọ string removeLast (), xoa theo chi muc dung
string
remove(int index).
̣
́
Vi du:
́ ̉ ử ử ̣ ̣ ̣ Đê s a gia tri cho môt item, s dung string set(int index, String
element)
̣ ́
Vi du:
2. Set
ệ ệ ạ ộ ầ ử ặ không trùng l p.
Giao di n này đ i di n cho m t nhóm các ph n t
ử ỗ ợ ể ậ Collection, h tr các thao tác x lý trên collection ki u t p
ế ừ ừ
Set k th a t
ợ
ộ ậ ầ ử ả ợ
h p (M t t p h p yêu c u các ph n t
ầ
ươ ứ ượ
ươ ứ ế ừ ừ ph i không đ
ng th c riêng ngoài các ph ặ
c trùng l p).
ng th c k th a t Set không có thêm ph
̀ ̀ ́ Collection.
́
ươ ́
ơ D i đây la mô hinh phân câp l p trong java.util.*:
2.1. SortedSet
ợ
ể SortedSet k th a t
ượ ỗ ợ
ư ả ộ ế ừ ừ
c. Các đ i t
ầ ử
ậ
có
ặ
ng đ a vào trong m t SortedSet ph i cài đ t
ả ậ ộ
Set, nó h tr thao tác trên t p h p các ph n t
ố ượ
th so sánh đ
ặ ớ
ế
giao ti p Comparable ho c l p cài đ t SortedSet ph i nh n m t
ể ủ ố ượ
Comparator trên ki u c a đ i t ặ
ng đó.
ộ ố ươ ứ ủ
2.1.1. M t s ph
ng th c c a SortedSet
ầ ử ầ
ầ ử ố ỏ
ớ ấ
ấ
• Object first(); // l y ph n t
• Object last(); // l y ph n t
ấ
đ u tiên (nh nh t)
ấ
cu i cùng (l n nh t)
ộ ậ ấ
• SortedSet subSet(Object e1, Object e2); // l y m t t p các ph n t
ầ ử
ừ ả ớ e1 t
́
ằ
n m trong kho ng t
ệ
ượ
̣
TreeSet th c hi n giao di n
i e2.
̃
ư
ệ Set, l u tr theo dang cây.
ư
́
́
ự
̀
ng đ
̀
ậ
ồ
săp xêp tăng dân..
Truy c p và thu h i khá nhanh, làm cho
́ ượ
Cac đôi t
c
ộ
ở
TreeSet tr thanh m t
́
ư
ớ
ượ ắ
ế
̉
ng l n thông tin đ
c s p x p co kha năng
ọ
́
ữ ố ượ
́
̣
ệ ờ
ự
l a ch n tuy t v i khi l u tr s l
́
tìm kiêm môt cach nhanh chong.
́
̀
́
̀
̃
̣ ượ
̣ ̣
Sau đây la môt sô ham thiêt lâp đ
c đinh nghia trong
TreeSet:
́
́
́
ơ
̣ ̣ ̉
TreeSet ()
TreeSet (Collection c )
TreeSet (Comparator comp )
TreeSet (SortedSet ss )
Vi du: Khai bao môt TreeSet v i TypeObject kiêu String.
2.2. HashSet
ể ư
HashSet h tr b i
́ ̀ ̃ ̣ duy nh tấ , nghia ̃
ữ và
cượ l u trư
ữ cac iteḿ
ỗ ợ ở m tộ b ngả băm đ l u tr
̀
ầ ử đ
ỗ
la cac item trong HashSet se không trung lăp. M
i ph n t
truy xu tấ thông qua các mã băm c a nóủ .
ế ầ ượ ở H u h t các function trong HashSet đ ấ
c cung c p b i các
̀ superclasses la AbstractCollection và AbstractSet.
ở ̣
2.2.1. Kh i tao HashSet
̀ ấ ố
ạ
ớ
L p HashSet cung c p b n constructor . Ba constructor đâu tiên t o
́ ́ ̃ ́ ́ ̣ ́
ơ
ra cac thiêt lâp rông v i cac size khac nhau:
ị t l p ban đ u cho các ph n t ầ ử
ế ậ
c thi
ộ
ủ ướ
ặ ị
̀ ̃ ̣ ̣ ̣
́ ượ ́
ơ public HashSet()
public HashSet(int initialCapacity)
public HashSet(int initialCapacity, int loadFactor)
ầ
N u không xác đ nh, kích th
c kích th
̃
̀
́
ng lên gâp đôi so v i luc tr ế
ữ ẽ ượ
ư
l u tr s đ
ượ
l
dung l
ướ
c m c đ nh c a m t HashMap. Khi dung
́
̀
ơ
ng măc đinh đa đây thi khi thêm môt item m i vao, HashSet se tăng
́
́
ươ
c khi thêm item đo.
̀ ́ ́ ̀ ́ ́ ́ Khi chung ta khai bao HashSet, thi nên dung câu truc khai bao sau:
́ ̀ ́ ́ ̣ ̉ ̣ Set set = new HashSet();
̀
Muc đich cua viêc khai bao nay la khi chung ta cân chuyên
́ ́ ́ ̉ ử ươ ư ư ̣ ̣ ̉ set sang
̃
́
ng th c co săn
̀
́
́
dang khac nh TreeSet, chung ta co thê s dung cac ph
trong Set interface.
́ ư ộ ho t đ ng nh m t hàm sao chép, no sao chép
các ph n t Constructor th t
ầ ử ừ ộ
t
̣ ứ ư ạ ộ
m t collection khac.́
public HashSet(Collection col)
́
Vi du:
́ ươ ̣ ̉
2.2.2. Môt sô ph
́
ư
̀ ̀ ử ̉ ̣ ̣
̣ ng th c cua HashSet
Đê thêm môt item vao HashSet, s dung ham add():
public boolean add(Object element)
́
Vi du:
ử ̉ ̣ ̣
̣ Đê thêm môt collection, s dung addAll():
public boolean addAll(Collection c)
́
Vi du:
́ ử ̉ ̣ ̣
Đê xoa môt item, s dung remove():
public boolean remove(Object element)
̣ ́
Vi du:
́ ̀
́ ́ ̉
ạ ộ ư
ươ
ướ Xoa nhiêu item:
public boolean removeAll(Collection c)
Xoa tât ca:
public void clear()
ng th c ́
Ph
ng ng
theo h ư retainAll () ho t đ ng gi ng nh removeAll (), nh ng
ư
ố
ượ ạ
c l i:
2.3. LinkedHashSet
́ ̀ ́ ươ ự ư T ng t ́
HashSet nh ng co kem theo danh sach liên kêt
3. Map
̀ ̀ ́
ơ ư ̣ ̉ ̉ ̣ ́
̀
̉ ơ
điên cô. L p nay la môt
̀ ̀
ư ượ ̣ ̣ ̣ ng nên cân đ
̃ ̃ ̀
̣ ự ́
̀
̉ ư c thay thê băng môt giao diên(interface). Giao diên
ợ ơ ̉ ư ̣ ̣ ̣
́ ́ ̀ ́ ̉ ̣ ̣ ̣ c
̃
̀ ượ ư ̣
̀ ̀ ́ ́ ́
́
̀
̀
Collection interface ma đ
́
ư ̣
́ ̀ ̉ ̣ ̉ ̉
́ ́ ư ượ ươ ̣ ̣ ̀
Map la môt interface dung đê thay thê cho l p t
́
́
ượ
ơ
l p tr u t
̃
Map đinh nghia môt s hô tr c ban đê l u tr môt căp keyvalue sao cho
́
́
ượ
môi key co thê anh xa đên môt gia tri duy nhât, va cac key(khoa) không đ
̃
c đinh nghia
trung nhau. Map không extend t
́
́
riêng, va la root cho môt nhanh phân câp khac (giông nh Collection). Co 4
triên khai (implementation) cu thê cua Map đo la: HashMap, WeakHashMap,
TreeMap, và Hashtable.
̀
Sau đây la môt sô ph ̃
c đinh ngia trong Map: ng th c đ
Map.Entry:
ữ ệ ấ Map cung c p 3 cách view d li u:
• View các khoá:
ả ề
Set keySet(); // Tr v các khoá
• View các giá tr : ị
ả ề
ị
Collection values(); // Tr v các giá tr
ị
ặ
• View các c p khoágiá tr
ả ề ặ ị
Set entrySet(); // Tr v các c p khoágiá tr
ể ả ộ ể
c k t qu là m t collection, ta có th dùng iterator đ
Sau khi nh n đ
ệ
duy t các ph n t ậ ượ ế
ầ ử ủ
c a nó.
3.1. HashMap
̀ ́ ̣ HashMap la l p implement giao diên Map. Cac item(keyvalue) trong
́
ơ
ượ
HashMap không đ
ở ̣
ầ ố ộ ́
́
c săp xêp.
3.1.1. Kh i tao HashMap
̉ ạ
Có b n constructor đê t o ra m t HashMap. Ba constructor đ u tiên cho
̃ ạ ộ phép t o ra m t HashMap rông (empty HashMap):
̀ ́ ́ ́ ̣ ̣ ̣ ̣ ̣
̣ ̣ public HashMap()
public HashMap(int initialCapacity)
public HashMap(int initialCapacity, float loadFactor)
́
ư
ư ư
Constructor th t
hoat đông nh môt ham thiêt lâp sao chep, no tao ra
́
̀
́
ơ ư
môt Map khac:
môt HashMap m i t
́ ươ ́
ư public HashMap(Map map)
3.1.2. Cac ph ng th c trong HashMap
̀ ́
ơ ử ̣ ̣
̣ Thêm môt item m i vao HashMap (keyvalue), s dung put():
public Object put(Object key, Object value)
́
Vi du:
ư ̣ Thêm t ́
̀
môt Map khac:
́ ̣ ̉
̣ Xoa môt item khoi HashMap:
public Object remove(Object key)
́
Vi du:
́ ́ ́ ̉
́ ư ̣ ̀
HashMap:
̣ Xoa tât ca cac item trong HashMap:
public void clear()
Lây môt item t
public Object get(Object key)
́
Vi du:
3.2. TreeMap
́ ́ ư ́
ơ
TreeMap la l p implement Map Interface. TreeMap ch a cac item v i
́ ̀ ́ ượ ̣ ̣ ̉ cac key đ ́
ươ
i dang môt cây cân băng, cây đo đen.
ở ̣
́ ́
ư ̉ ̀
́
ơ
́
c săp xêp d
3.2.1. Kh i tao TreeMap:
public TreeMap()
public TreeMap(Map map)
public TreeMap(Comparator comp)
public TreeMap(SortedMap map)
ươ
3.2.2. Cac ph ng th c cua TreeMap
3.3. LinkedHashMap
́ ử ̣ ng t
́ ́ ̀ . Tuy nhiên,
́
ơ ̣ ̣ ̃
ự ư
ươ
ư
nh HashMap nh ng co s dung danh
LinkedHashMap cung t
́
́
́
́
́
ư ự
ơ
ượ
c liên kêt v i nhau va co th t
sach liên kêt, cac item đ
ơ
LinkedHashMap truy câp item châm h n so v i HashMap.
́ ́ ̃ ự
III. S khac nhau giua cac Collection
̀
1. List, Set va Map
ệ
ấ ạ ấ ̉
́ Giao di n này cung c p method đê chèn và xoa cac item t
ượ ̣
ộ ố ̉ ̣ ̉ ́
́
ể
ộ
i m t đi m b t
ầ ử
ế
trong
c truy câp và tìm ki m các ph n t
́
́
ư
. Không gi ng nh các b , danh sach co thê
́ ́ ̀ ư ỳ
k trong danh sách, cac item đ
danh sách theo chi muc (index).
ch a cac item trung nhau.
ể ậ ầ ử ử ợ Set h tr các thao tác x lý trên collection ki u t p h p, các ph n t
ượ ỗ ợ
ả
trong Set ph i không đ
ầ ử ượ ạ ấ ả Map cung c p các thao tác x lý trên các b ng ánh x , các ph n t đ c
̃ ượ ư c trùng nhau.
ử
c có 2 khoá trùng nhau. ư
l u tr theo khoá và không đ
́ ̉ ̉
2. Cac triên khai(implement) cua List
́ ́ ̀ ̀ ́
ơ ̣
ư ế ố
́ ́ ủ ế Co 2 l p implement giao diên List, đo la ArrayList va LinkedList.
Không gi ng nh ArrayList, LinkedList là danh sách liên k t kép cung
vào đ u và k t thúc c a danh sách,
̀ ộ
ế ượ ử ụ ế ợ ầ
ộ ̉ ̣ ầ ử
ấ
c p cac method chèn, xoa m t ph n t
́
danh sách liên k t đ
́ ơ ̣ ̣
́ ỉ ố ấ ỳ ầ ả ậ
c s d ng co thê la m t hàng đ i hoăc ngăn x p.
́
ơ
Trong viêc lookup ArrayList truy câp nhanh h n LinkedList. Đôi v i
LinkedList, muôn truy c p vào item hay ch s b t k yêu c u ph i đi qua
ề
nhi u nút.
ườ ớ Thêm và xoá các ph n t
̀ ầ ử
ề trong LinkedList th
ụ ộ ơ
ng nhanh h n so v i
ướ ủ c c a collection
ị ArrayList. Tuy nhiên, đi u này con ph thu c vào kích th
ỉ ố
và v trí các ch s .
́ ̉ ̉
3. Cac triên khai(implement) cua Set
̀
3.1. HashSet va TreeSet
́ ượ c
. ́
săp xêp trât t
ứ ự
ầ ế ố ẽ ượ
s đ
ự ự
t ́
c xêp theo th t
ặ ằ
nhiên ho c b ng cách
ế
c s p x p, các y u t
ế
c s p x p theo trình t
ở ạ
ạ
i luc kh i t o.
HashSet implement Set interface. Cac item trong HashSet không đ
́
̣ ự
ộ ậ ượ ắ
TreeSet là m t t p đ
ế ố ượ ắ
đ
ị
̀ tăng d n. Các y u t
́
ở
so sánh b i các quy đ nh t
3.2. LinkedHashSet va HashSet
̀ ̀ ́ ư
Cung giông nh ArrayList va LinkedList, LinkedHashSet va HashSet
ộ ứ ế ch LinkedHashSet duy trì m t danh sách liên k t kép có ch a các
ứ ự ầ ủ ̃
ở ỗ
khác
hashCode và th t ban đ u c a các item.
́ ̉ ̉
4. Cac triên khai(implement) cua Map
̀
4.1. HashMap va Hashtable
ự ữ ệ ế ậ ồ S khác nhau gi a 2 cái là vi c truy nh p đ n HashTable là đ ng
ớ ộ
b (Synchronized) trong khi v i HashMap thì không.
ỉ ể ồ Synchronized
ở
ộ ể ế ộ ồ
ộ
ộ
đây có nghĩa là ch có m t lu ng có th modify m t
ờ
ạ
i m t đi m trong cùng m t th i gian. N u có m t lu ng
ề
ố ế
ộ
ượ
ả ợ ể ố ượ ả
ẽ ồ c quy n
ả
ng trong khi các lu ng kia s ph i đ i đ nh
HashTable t
khác nào mu n update trên HashTable đó thì nó ph i chi m đ
ể
ki m soát trên đ i t
khóa.
ồ ề ở ồ
ự ộ ồ ỉ
ế
ể ữ ẹ ữ ệ HashTable là lu ng an toàn(thread safe) b i khi có nhi u lu ng truy
ậ
nh p đ n m t HashTable thì ch có m t lu ng th c thi update sau khi đã
khóa đ gi ộ
toàn v n d li u.
ồ ậ
ố ồ
ạ ệ ẽ
ạ ộ
ắ ế ắ
ồ ị
ẽ ự ề
ế ư ơ
ớ
̃ ề
HashMap không an toàn khi có nhi u lu ng truy nh p vào HashMap và
ữ ệ
ộ
m t trong các lu ng đó c update d li u và sau đó nó s tung ra m t
ử ụ
(Exception). Chúng ta s d ng HashMap n u b n ch c ch n
ngo i l
ẽ
ở
ậ
ằ
r ng HashMap s không b truy nh p b i nhi u lu ng. Tuy HashMap
ồ
ả
không ph i là lu ng an toàn nh ng chính vì th nó s th c thi nhanh h n
so v i HashTable.
̣ ự ệ ư t n a là HashMap cho phép có value là null còn
Môt s khác bi
HashTable thì không.
ờ ậ ườ Chính vì các lý do trên, bây gi các l p trình viên th ử ụ
ng s d ng
̀ HashMap.
4.2. TreeMap va HashMap
ỏ ệ
́ ̀ ả ằ
ự ự
t
́ ấ ặ ở ̉ ̣ ầ
c xêp tăng d n theo trinh t
c cung c p khi kh i tao. Cac item
ượ ́
ả
đ m b o r ng cac item trong no s đ
́
́
nhiên cua cac khoa, ho c do so sánh đ
̀
trong HashMap thi không đ
ụ ế ậ ộ ơ ớ ự
TreeMap là cây Đ Đen cây d a trên giao di n SortedMap. TreeMap
́
ẽ ượ
ượ
́
́
c săp xêp.
Tìm ki m m t m c trong TreeMap là ch m h n so v i HashMap.
̀
4.3. LinkedHashMap va HashMap
ự ệ ơ ả S khác bi
ầ ử t c b n gi a HashMap và LinkedHashMap là
chèn các ph n t
ứ ế ộ ầ ủ ứ ự . LinkedHashMap duy trì
ban đ u c a
ữ
ậ ự
LinkedHashMap duy trì tr t t
m t danh sách liên k t kép có ch a các hashCode và th t
các item.