You are on page 1of 12

c 

  cc

c 
 
cc
-- -  -  -  - --

Đӗ án môn hӑc:

Seminar Công NghӋ Phҫn MӅm




 !c 

› 
 

 
   
  !   "
#$!%&  ' ()

  c c 


c 
  cc

Ë| 
!ava đưӧc khӣi đҫu bӣi !ames Gosling và bҥn đӗng nghiӋp ӣ Sun Microsystems năm 1991. Ban đҫu ngôn
ngӳ này đưӧc gӑi là Oak (có nghĩa là cây sӗi; do bên ngoài cơ quan cӫa ông Gosling có trӗng nhiӅu loҥi
cây này), hӑ dӵ đӏnh ngôn ngӳ đó thay cho C++, nhưng các tính năng giӕng Objective C. Không nên lүn
lӝn !ava vӟi !avaScript, hai ngôn ngӳ đó chӍ giӕng tên và loҥi cú pháp như C. Công ty Sun Microsystems
đang giӳ bҧn quyӅn và phát triӇn !ava thưӡng xuyên.

!ava đưӧc tҥo ra vӟi tiêu chí "ViӃt (code) mӝt lҫn, thӵc thi khҳp nơi" ("Write Once, Run Anywhere"
(WORA)). Chương trình phҫn mӅm viӃt bҵng !ava có thӇ chҥy trên mӑi nӅn tҧng (platform) khác nhau
thông qua mӝt môi trưӡng thӵc thi vӟi điӅu kiӋn có môi trưӡng thӵc thi thích hӧp hӛ trӧ nӅn tҧng đó. Môi
trưӡng thӵc thi cӫa Sun Microsystems hiӋn hӛ trӧ Sun Solaris, Linux, Mac OS, FreeBSD & Windows.
Ngoài ra, mӝt sӕ công ty, tә chӭc cũng như cá nhân khác cũng phát triӇn môi trưӡng thӵc thi !ava cho
nhӳng hӋ điӅu hành khác như BEA, IBM, HP... . Trong đó đáng nói đӃn nhҩt là IBM !ava Platform hӛ trӧ
Windows, Linux, AIX & z/OS.

Nhӳng chi tiӃt vӅ ngôn ngӳ, máy ҧo và API cӫa !ava đưӧc giӳ bӣi Cӝng đӗng !ava (do Oracle quҧn lý).
!ava đưӧc tҥo ra vào năm 1991 do mӝt sӕ kӻ sư ӣ Sun, bao gӗm ông !ames Gosling, mӝt phҫn cӫa Dӵ án
Xanh (Green Project). !ava đưӧc phát hành vào năm 1994, rӗi nó trӣ nên nәi tiӃng khi Netscape tuyên bӕ
tҥi hӝi thҧo SunWorld năm 1995 là trình duyӋt Navigator cӫa hӑ sӁ hӛ trӧ !ava. VӅ sau !ava đưӧc đưӧc
hӛ trӧ trên hҫu hӃt các trình duyӋt như Internet Explorer (Microsoft), Firefox (Mozilla), Safari (Apple)...

!ava đưӧc sӱ dөng chӫ yӃu trên môi trưӡng mҥng, internet.subby Sau khi Oracle mua lҥi công ty Sun
Microsystems năm 2009-2010, Oracle đã mô tҧ hӑ là "ngưӡi quҧn lý công nghӋ !ava vӟi cam kӃt không
ngӯng đӇ bӗi dưӥng mӝt cӝng đӗng tham gia và minh bҥch".

r| R   

Có 5 mөc tiêu chính trong viӋc xây dӵng ngôn ngӳ !ava:

1.| Nó sӁ đưӧc "đơn giҧn, hưӟng đӕi tưӧng và quen thuӝc".


2.| Nó sӁ đưӧc "mҥnh mӁ và an toàn".
3.| Nó sӁ đưӧc "kiӃn trúc trung lұp và di đӝng".
4.| Nó sӁ đưӧc thӵc thi vӟi "hiӋu suҩt cao".
5.| Nó sӁ đưӧc "thӇ hiӋn, phân luӗng và năng đӝng".

ß|   
   
±| !DK 1.1.4 (Sparkler) 12 tháng 9, 1997
±| !DK 1.1.5 (Pumpkin) 3 tháng 12, 1997
±| !DK 1.1.6 (Abigail) 24 tháng 4, 1998
±| !DK 1.1.7 (Brutus) 28 tháng 9, 1998
±| !DK 1.1.8 (Chelsea) 8 tháng 4, 1999
±| !2SE 1.2 (Playground) 4 tháng 12, 1998
±| !2SE 1.2.1 (không có) 30 tháng 3, 1999
±| !2SE 1.2.2 (Cricket) 8 tháng 7, 1999
±| !2SE 1.3 (Kestrel) 8 tháng 5, 2000
±| !2SE 1.3.1 (Ladybird) 17 tháng 5, 2001

  c c "


c 
  cc
±| !2SE 1.4.0 (Merlin) 13 tháng 2, 2002
±| !2SE 1.4.1 (Hopper) 16 tháng 9, 2002
±| !2SE 1.4.2 (Mantis) 26 tháng 6, 2003
±| !2SE 5 (1.5.0) (Tiger) 29 tháng 9, 2004
±| !ava SE 6 (còn gӑi là Mustang), đưӧc công bӕ 11 tháng 12 năm 2006, thông tin chính tҥi
http://java.sun.com/javase/6/ . Các bҧn cұp nhұt 2 và 3 đưӧc đưa ra vào năm 2007, bҧn cұp nhұt 4
đưa ra tháng 1 năm 2008.
±| !DK 6.18, năm 2010

  c c #


c 
  cc

ËË |  !" #$


Khi bҥn viӃt mã lӋnh bҵng ngôn ngӳ !ava, giӕng như nhiӅu ngôn ngӳ khác, bҥn viӃt mã nguӗn, sau đó
bҥn biên dӏch nó; trình biên dӏch kiӇm tra mã lӋnh cӫa bҥn và đӕi chiӃu vӟi các quy tҳc cú pháp cӫa ngôn
ngӳ. Nhưng nӅn tҧng !ava bә sung thêm mӝt bưӟc khác nӳa ngoài các bưӟc trên. Khi bҥn biên dӏch mã
!ava, bҥn sӁ nhұn đưӧc kӃt quҧ là á %& (bytecodes). Sau đó, máy ҧo !ava (!VM) sӁ thông dӏch các mã
byte này lúc chҥy chương trình.

Khi bҥn viӃt mã, bҥn sinh ra mӝt tӋp .java. Khi bҥn biên dӏch tӋp này, trình biên dӏch cӫa !ava sinh ra mӝt
tӋp .class, chӭa các mã byte. !VM đӑc và thông dӏch tӋp .class này lúc chҥy và nó hoҥt đӝng như thӃ nào
là tùy thuӝc vào nӅn tҧng hӋ thӕng mà bҥn đang chҥy. ĐӇ chҥy trên các nӅn hӋ thӕng khác nhau, bҥn phҧi
biên dӏch mã nguӗn cӫa mình theo các thư viӋn dành riêng cho nӅn tҧng hӋ thӕng đó. Bҥn có thӇ hình
dung, lӡi hӭa hҽn ³viӃt mӝt lҫn, chҥy mӑi nơi´ sӁ trӣ thành ³viӃt mӝt lҫn, kiӇm thӱ mӑi nơi´. Bӣi vì giӳa
các nӅn tҧng hӋ thӕng khác nhau có nhiӅu điӇm khác nhau nên có thӇ khiӃn cho mã lӋnh cӫa bҥn thi hành
khác nhau trên nhӳng nӅn tҧng khác nhau.

r| 

!ava Platform, Standard Edition hoһc !ava SE là mӝt nӅn tҧng đưӧc dùng rӝng rãi đӇ lұp trình bҵng ngôn
ngӳ !ava. Đây là nӅn tҧng !ava đưӧc sӱ dөng đӇ triӇn khai các ӭng dөng portable đӇ sӱ dөng chung. Trên
thӵc tӃ, !ava SE bao gӗm mӝt máy ҧo, đưӧc sӱ dөng đӇ chҥy các chương trình !ava, cùng vӟi mӝt tұp hӧp
các thư viӋn (hoһc "các gói") cҫn thiӃt đӇ cho phép sӱ dөng các tұp tin hӋ thӕng, mҥng, giao diӋn đӗ hӑa,
và cҧ chính chương trình đó.

Tӯ phiên bҧn !ava 1.2 đӃn 1.5, !ava SE thưӡng đưӧc biӃt đӃn vӟi cái tên !2SE(!ava 2 Platform: Standard
Edition). Tuy nhiên, đӃn phiên bҧn 1.6 thì sӕ 2 đã đưӧc bӓ đi.

§| !  




j| '(á&) á&* + +)+,()-


Môi trưӡng thӵc thi !ava hay !RE cung cҩp các !ava API, máy ҧo !ava (!ava Virtual Machine hay !VM)
và các thành phҫn cҫn thiӃt khác đӇ chҥy các applet và ӭng dөng viӃt bҵng ngôn ngӳ lұp trình !ava. Môi
trưӡng thӵc thi !ava không có các công cө và tiӋn ích như là các trình biên dӏch hay các trình gӥ lӛi đӇ
phát triӇn các applet và các ӭng dөng.

'| ' ./ &0&&12á&* + +)+, 0-


!ava 2 SDK là mӝt tұp mҽ cӫa !RE, và chӭa mӑi thӭ nҵm trong !RE, bә sung thêm các công cө như là
trình biên dӏch (compiler) và các trình gӥ lӛi (debugger) cҫn đӇ phát triӇn applet và các ӭng dөng.

Tên !2SE (!ava 2 Platform, Standard Edition) đưӧc sӱ dөng tӯ phiên bҧn 1.2 cho đӃn 1.5. Tӯ "SE" đưӧc
sӱ dөng đӇ phân biӋt vӟi các nӅn tҧng khác là !ava EE và !ava ME. "2" ban đҫu vӕn đưӧc dùng đӇ chӍ đӃn
nhӳng thay đәi lӟn trong phiên bҧn 1.2 so vӟi các phiên bҧn trưӟc, nhưng đӃn phiên bҧn 1.6 thì "2" bӏ loҥi
bӓ.

Phiên bҧn đưӧc biӃt đӃn tӟi thӡi điӇm hiӋn tҥi là !ava SE 6 (hay !ava SE 1.6 theo cách đһt tên cӫa Sun
Microsystems) vӟi tên mã Mustang.

  c c $


c 
  cc

ß| 

!ava Platform, Micro Edition (!ava ME) là 1 môi trưӡng mҥnh, linh đӝng trong viӋc phát triӇn ӭng dөng
chҥy trên điӋn thoҥi di đӝng (mobile) và các thiӃt bӏ nhúng (embedded devices) ± mobile phones, PDAs,
TV set-top boxes, và máy in. !ava ME gӗm giao diӋn ngưӡi dùng linh đӝng, bҧo mұt mҥnh, giao thӭc
mҥng đưӧc xây dӵng sҹn, và hӛ trӧ cҧ ӭng dөng có kӃt nӕi mҥng lүn ӭng dөng offline. Ӭng dөng dӵa trên
!ava ME mang tính khҧ chuyӇn trên nhiӅu thiӃt bӏ, tương thích nhiӅu nӅn tҧng.

!ava ME Platform là 1 dӵ án mӣ cho viӋc xây dӵng ӭng dөng trên điӋn thoҥi di đӝng. Nó bao gӗm các
thành phҫn chuҭn đưӧc đӏnh nghĩa bӣi !ava Community Process (!CP). !ava ME đưӧc thiӃt kӃ đӇ cung
cҩp tính linh đӝng giӳa các nӅn tҧng.

Công nghӋ !ava ME đưӧc sӵ tham gia và cҧi tiӃn liên tөc đӇ tҥo ra các chuҭn tӯ !CP.

§| i 

Mobile Information Device Profile (MIDP) là mӝt đһc tҧ kӻ thuұt đưӧc công bӕ cho viӋc sӱ dөng !ava
trên các thiӃt bӏ nhúng như điӋn thoҥi di đӝng và PDA. MIDP là mӝt phҫn cӫa nӅn tҧng !ava, Micro
Edition (!ava ME) framework và nҵm ӣ phҫn đҫu cӫa Cҩu hình thiӃt bӏ bӏ hҥn chӃ KӃt nӕi (Connected
Limited Device Configuration - CLDC), mӝt tұp hӧp các giao diӋn lұp trình cҩp thҩp. MIDP đã đưӧc phát
triӇn theo !ava Community Process. Các thiӃt bӏ MIDP đҫu tiên đưӧc tung ra vào tháng Tư năm 2001.

ËËË |  3 á 24 5


r| 
!ava Development Kit (!DK - Bӝ công cө cho ngưӡi phát triӇn ӭng dөng bҵng ngôn ngӳ lұp trình !ava) là
mӝt tұp hӧp nhӳng công cө phҫn mӅm đưӧc phát triӇn bӣi Sun Microsystems dành cho các nhà phát triӇn
phҫn mӅm, dùng đӇ viӃt nhӳng applet !ava hay nhӳng ӭng dөng !ava - bӝ công cө này đưӧc phát hành
miӉn phí gӗm có trình biên dӏch, trình thông dӏch, trình giúp sӱa lӛi (debugger, trình chҥy applet và tài
liӋu nghiên cӭu).

KӇ tӯ khi ngôn ngӳ !ava ra đӡi, !DK là bӝ phát triӇn phҫn mӅm thông dөng nhҩt cho !ava. Ngày 17 tháng
11 năm 2006, hãng Sun tuyên bӕ !DK sӁ đưӧc phát hành dưӟi giҩy phép GNU General Public License
(GPL), !DK trӣ thành phҫn mӅm tӵ do. ViӋc này đã đưӧc thӵc hiӋn phҫn lӟn ngày 8 tháng 5 năm 2007[1]
và mã nguӗn đưӧc đóng góp cho Open!DK.

ß|  
j| c67) 128&
Eclipse là mӝt môi trưӡng phát triӇn tích hӧp (Integrated Development Environment ± IDE) cho !ava,
đưӧc phát triӇn ban đҫu bӣi IBM và hiӋn nay bӣi tә chӭc Eclipse (http://www.eclipse.org). ĐӃn thӡi điӇm
hiӋn nay, Eclipse không gói gӑn trong viӋc cung cҩp môi trưӡng phát triӇn tích hӧp cho !ava mà còn cho
các ngôn ngӳ khác như !avaScript, PHP, C, C++, Cobol, Python, C#, HTML, XML nӃu ngưӡi dùng cài
đһt thêm các plug-in. Ngoài viӋc hӛ trӧ các ngôn ngӳ lұp trình, các plug-in còn cho phép Eclipse làm viӋc
đưӧc vӟi ngôn ngӳ sҳp chӳ (typesetting language) như LaTEX; ӭng dөng mҥng như Telnet, trình duyӋt
web; hӋ quҧn trӏ cơ sӣ dӳ liӋu«

  c c %


c 
  cc
'| 9 :  #) 128&;

a)| c atformruntim
Công viӋc chính cӫa Platform runtime là phát hiӋn xem plug-in nào đang có trong thư mөc plug-in cӫa
Eclipse.Mӛi Plug-in đӅu có 1 tұp tin Manifest liӋt kê nhӳng kӃt nӕi mà plug-in cҫn.Plug-in chӍ đưӧc tҧi
vào Eclipse mӛi khi thӵc sӵ cҫn thiӃt đӇ giҧm lưӧng tài nguyên yêu cҫu và thӡi gian khӣi tҥo.

l)| c orkspac
±| Workspace chӏu trách nhiӋm quҧn lý tài nguyên ngưӡi dùng đưӧc tә chӭc dưӟi dҥng Project. Mӛi
Project là mӝt thư mөc con trong thư mөc Workspace.
±| Workspace lưu trӳ lӏch sӱ nhӳng sӵ thay đәi tài nguyên, tránh thҩt thoát tài nguyên ngưӡi dùng.
±| Workspace đӗng thӡi chӏu trách nhiӋm thông báo nhӳng công cө cҫn thiӃt cho viӋc thay đәi tài
nguyên.

c)| c orklnc 


Workbench là giao diӋn đӗ hӑa ngưӡi dùng cӫa Eclipse, gӗm có Standard Widget Toolkit (SWT) và
!Face. Eclipse không hoàn toàn bҳt buӝc phҧi sӱ dөng SWT hay !face đӇ lұp trình giao diӋn, bҥn vүn có
thӇ sӱ dөng AWT hay SWING cӫa !ava thông qua viӋc cài đһt các Plug-ins.

  c c &


c 
  cc
—)| camsupport
Trang bӏ hӋ thӕng quҧn trӏ đӇ quҧn lý dӵ án cӫa ngưӡi dùng : Concurrent Versions System (CVS)

)| ?p
Cung cҩp hӋ thӕng tài liӋu mӣ rӝng, có thӇ là đӏnh dҥng HTML hay XML.

Ë | :242$1<2 =
r| R
Là mӝt nhóm các class, interface, các gói khác đã đưӧc biên dӏch thành !ava bytecode. Mӑi đӕi tưӧng
!ava đӅu nҵm trong mӝt package. NӃu bҥn không nói rõ ràng nó thuӝc gói nào, !ava sӁ đһt nó vào
trong gói mһc đӏnh. Mӝt package chӍ đơn giҧn là mӝt tұp các đӕi tưӧng, tҩt cҧ (thưӡng là thӃ) liên quan
vӟi nhau theo mӝt cách nào đó. Cácpackage quy chiӃu theo đưӡng dүn đӃn tӋp tin trong hӋ thӕng tӋp cӫa
bҥn. Tên cӫa các gói dùng ký pháp dҩu chҩm (.) đӇ dӏch đưӡng dүn tӋp tin này thành mӝt thӭ mà nӅn tҧng
!ava hiӇu đưӧc.

Cóbӕn lý do cҫn đóng gói các lӟp:

±| DӉ tìm các lӟp: Các lӟp có chӭc năng tương tӵ nhau đưӧc đһt trong cùng mӝt gói đӇ dӉ tìm.
±| Tránh sung đӝt tên.
±| Phân tán phҫn mӅm thuұn tiӋn.
±| Bҧo vӋ các thành viên cӫa lӟp.

Quy ưӟc đһt tên gói:

±| Trong các gói có thӇ lҥi chӭa các gói khác.


Vídө: java.lang.Math cho biӃt lӟp Math nҵm trong gói lang, gói lang
nҵm trong gói java. Tә chӭc các gói theo kiӇu này sӁ đҧm bҧo các tên
gói không bӏ trùng nhau.
±| Các gói cùng gói cha, các lӟp cùng gói không đưӧc trùng tên nhau.
±| NӃu muӕn đóng gói các lӟp đӇ đưa lên Internet cho mӑi ngưӡi sӱ dөng
thì phҧi chӑn mӝt tên duy nhҩt, ngưӡi ta thưӡng lҩy đҧo ngưӧc cӫa tên
miӅn Internet làm tiӅn tӕ cӫa tên gói.
Vídө: Tên miӅn cӫa ĐH Sài Gòn là sgu.edu.vn thì đһt tên gói là
vn.edu.sgu.tengoi
±| Theo quy ưӟc đһt tên gói dùng kiӇu lowercase (viӃt thưӡng).

Thư mөc chӭa các gói:

±| !ava yêu cҫu cҩu trúc thư mөc chӭa gói phҧi tương ӭng vӟi tên gói.
Ví dө: vӟi tên gói là vn.edu.hau1.mypackage thì phҧi tҥo cҩu trúc thư
mөc là \vn\edu\hau1\mypackage
±| ĐӇ !ava tìm đưӧc nơi đһt cây thư mөc gói thì biӃn môi trưӡng classpath phҧi xác đӏnh thư mөc
chӭa cây thư mөc gói.
Ví dө: nӃu cây thư mөc gói đһt trong thư mөc c:\javapro thì classpath = . ;c:\javapro

  c c '


c 
  cc
Dҩu . xác đӏnh thư mөc hiӋn tҥi luôn ӣ trong classpath.

j| c2 >&
Khai báo package trong code cӫa class.
Dùng tӯ khóa package
Cú pháp: package PackageCha[.PackageCon];
Khai báo package phҧi là dòng đҫu tiên cӫa code java.
/* Comment */
package PackageCha[.PackageCon];
[import OtherPackageName ;]
class ClassName
{ .......
}
Khi biên dӏch thành công:
Ô| NӃu chưa có thư mөc PackageName thì thư mөc này sӁ đưӧc tӵ đӝng tҥo ra
Ô| File.class cӫa code này sӁ đưӧc đһt vào thư mөc này.

'| ?+3@ >&


Dùng chӍ thӏ import vӟi mӝt trong các cú pháp sau:

import PackageName.*;

import PackageCha.PackageCon.*;

import PackageName.ClassName;

import PackagCha.PackageCon.ClassName;

ß|  
Mӝt lӟp có thӇ đưӧc dүn xuҩt (derived) tӯ lӟp khác, và do vұy kӃ thӯa (inherit) mӑi trưӡng và phương
thӭc cӫa lӟp đó.

±| Lӟp đưӧc kӃ thӯa gӑi là lӟp cha (superclass, parent class) hoһc lӟp cơ sӣ (base class).
±| Lӟp thӯ kӃ gӑi là lӟp con (subclass, child class) hoһc lӟp dүn xuҩt (derived class) hoһc lӟp mӣ
rӝng (extended class).

Trong !ava, tҩt cҧ các lӟp đӅu đưӧc dүn xuҩt tӯ Object. Quan hӋ kӃ thӯa tҥo thành cây hay cҩu trúc phân
cҩp.

  c c (


c 
  cc

Cú pháp thӯa kӃ trong !ava:

public class Tên_Lӟp_Cha {

«««««««««««..

public class Tên_Lӟp_Con extends Tên_Lӟp_Cha {

«««««««««««

| 
Interface là 1 lӟp bao gӗm biӃn hҵng và các hàm đưӧc khai báo trưӟc nhưng không đưӧc đӏnh nghĩa,
nghĩa là các hàm này không hӅ có thân (body). Interface chӭa các hành vi chuҭn (standard behavior) đưӧc
thӵc hiӋn bӣi bҩt kì lӟp nào trong hӋ thӕng phân cҩp lӟp. Nghĩa là các hàm trong interface có thӇ đưӧc
thӵc hiӋn bӣi các lӟp không có liên hӋ gì đӃn nó.
Interface đưӧc dùng như mӝt "kiӇu" chӍ chӭa đӏnh nghĩa hҵng và phương thӭc trӯu tưӧng. Interface
không thӵc thi bҩt cӭ mӝt phương thӭc nào nhưng đӇ lҥi cҩu trúc thiӃt kӃ trên bҩt cӭ lӟp nào sӱ dөng
nó.Mӝt lӟp thӵc thi interface phҧi hoһc cài đһt tҩt cҧ các phương thӭc(có trong interface) hoһc khai báo là
lӟp trӯu tưӧng.

j| :A>+BË& . &;
±| Mӝt lӟp thi hành các hàm trong interface thông qua tӯ khoá implements.
±| Mӝt lӟp có thӇ implements nhiӅu interface.
±| Dù không khai báo tӯ khoá abstract, nhưng mӑi hàm trong 1 interface đӅu đưӧc coi là abstract
(trӯu tưӧng).
±| Các biӃn trong Interface thì phҧi là public, static hay final.
±| Không đưӧc khai báo private hay protected đӕi vӟi các biӃn và các hàm trong Interface vì các
hàm này sӁ đưӧc viӃt lҥi (overriden) trong lӟp thӵc thi nó.
±| Hàm trong interface không thӇ là final.

  c c )


c 
  cc
'| %4& . &
Khai báo interface bҵng 1 file.java, biên dӏch thành file.class.

Cú pháp:

[modifier]interface InterfaceName

{ [ modifier] <final data>

[ modifier] DataTypeMethod (args);

Chӑn modifier là public đӇ mӑi nơi đӅu dùng đưӧc.

NӃu không có modifier thӍ chӍ các class/interface cùng gói/ cùng thư mөc mӟi truy cұp đưӧc.

Modifier trong interface nên là public đӇ dӉ dùng.

‰| cC +,á21&á&& . &-


Giao diӋn đưӧc thӵc thi thông qua các lӟp.

Mӝt lӟp có code cө thӇ hóa các hành vi cӫa mӝt interface thì gӑi là implementation.

Mӝt lӟp có thӇ thӵc thi nhiӅu interface (vì trong java chӍ cho đơn thӯa kӃ nên cách này dung đӇ phөc vө
cho đa thӯa kӃ).

Cú pháp xây dӵng mӝt lӟp có thӵc thi interface:

[modifier] class TênextendsLӟpChaimplements Interface1, interface2,...

<Data riêng>

<thӵc thi cӫa các method riêng>

<thӵc thi các method cӫa interface1>

<thӵc thi các method cӫa interface2>

<thӵc thi các method cӫa các interface khác>

|  11& 8. á&/ >


r| 
Thӯa kӃ tӯ interface Collection, là tұp hӧp các phҫn tӱ không trùng nhau (bao gӗm cҧ phҫn tӱ null).

  c c *


c 
  cc

j| 8 &D)E
extends AbstractSet<E>

implements Set<E>, Cloneable, Serializable

Tӕc đӝ truy xuҩt cӵc nhanh.

'| c && &D)E


extends AbstractSet<E>

implements NavigableSet<E>, Cloneable, Serializable

Tұp hӧp các phҫn tӱ đưӧc sҳp xӃp theo thӭ tӵ (các phҫn tӱ khi đưa vào TreeSet sӁ tӵ đӝng đưӧc đưa đúng
vӏ trí theo thӭ tӵ sҳp xӃp).

‰| 0>&+ 8 &D)E


extends HashSet<E>

implements Set<E>, Cloneable, Serializable

Là implement trung gian giӳa HasSet và TreeSet, giӕng như là mӝt bҧng băm vӟi mӝt danh sách liên kӃt
chҥy bên trong nó. LinkedHashSet có tӕc đӝ truy xuҩt nhanh gҫn bҵng HasSet.

ß| 0 
Là tұp hӧp các phҫn tӱ theo thӭ tӵ (do ngưӡi dùng sҳp xӃp). Ngưӡi sӱ dөng interface này có thӇ kiӇm soát
chính xác các phҫn tӱ thông qua vӏ trí cӫa mà phҫn tӱ đó đưӧc thêm vào. Ngưӡi dùng có thӇ truy xuҩt các
phҫn tӱ thông qua vӏ trí cӫa nó và có thӇ tìm kiӃm các phҫn tӱ trong đó. Không như Set, trong List cho
phép các phҫn tӱ trùng lһp.

j| r 08D)E
extends AbstractList<E>

implements List<E>, RandomAccess, Cloneable, Serializable

Cung cҩp các truy xuҩt theo vӏ trí không đәi theo thӡi gian, tӕc đӝ nhanh. Nó không phҧi cҩp phát mӝt
đӕi tưӧng Node cho mӛi phҫn tӱ trong List, và nó có thӇ tұn dөng lӧi thӃ cӫa System.arraycopy khi nó
phҧi di chuyӇn nhiӅu phҫn tӱ cùng mӝt lúc.

'| 0>&+08D)E
extends AbstractSequentialList<E>

implements List<E>, Deque<E>, Cloneable, Serializable

  c c 


c 
  cc
NӃu bҥn muӕn thêm mӝt phҫn tӱ vào đҫu List hay duyӋt qua các phҭn tӱ cӫa List đӇ xóa mӝt phҫn tӱ dӵa
theo nӝt dung cӫa phҫn tӱ đó thì nên sӱ dөng LinkedList. Tuy nhiên thì LinkedList lҥi tӕn khá nhiӅu thӡi
gian đӇ truy xuҩt so vӟi ArrayList.

| 
Tұp hӧp các phҫn tӱ đưӧc truy xuҩt theo nguyên tҳc ³vào trưӟc, ra trưӟc´. LinkedList là mӝt thӵc thi cӫa
interface Queue.

|  
Là mӝt đӕi tưӧng dùng đӇ ánh xҥ các Key thành giá trӏ tương ӭng. Trong Map không chӭa các key trùng
lһp và mӛi key chӍ ánh xҥ cho duy nhҩt mӝt giá trӏ tương ӭng.

j| c &&F2D*E
extends AbstractMap<K,V>

implements NavigableMap<K,V>, Cloneable, Serializable

TreeMap dùng đӇ ánh xҥ mà trong đó các key đưӧc sҳp xӃp theo thӭ tӵ.

'| 8F2D*E
extends AbstractMap<K,V>

implements Map<K,V>, Cloneable, Serializable

Dùng đӇ ánh xҥ mà tӕc đӝ truy xuҩt các key và value cӵc kì nhanh.

‰| 0>&+ 8F2D*E
extends HashMap<K,V>

implements Map<K,V>

Là sӵ kӃt hӧp giӳa TreeMap và LinkedHashMap, các key đưӧc sҳp xӃp theo thӭ tӵ và tӕc đӝ truy xuҩt
cũng khá nhanh.

  c c "

You might also like