Ề SEMINAR KĨ THU T PH N M M SEMINAR KĨ THU T PH N M M Ề

Ậ Ậ

Ầ Ầ

M T S V N Đ C B N V JAVA

Ộ Ố Ấ

Ề Ơ Ả

Nhóm 07 :

ng

ươ

Nguy n H ng Ph Ph m Thiên Phúc Nguy n Giáp Nguyên Sinh

N i dung trình bày ộ

ạ ộ ủ ệ

1. Nguyên t c ho t đ ng c a Java. Khái ni m ắ Java platform:

ng phát tri n (JDK, Eclipse). + Java SE: JRE + Java ME: MIDP ườ ụ ể

2. Công c môi tr 3. Cú pháp Java (package, tên file, tên l p, cách th a ừ ớ

ự ệ

4. Các lo i Interfaces và l p m ng Java k l p và th c thi giao di n) ế ớ ả ạ ớ

1-1. NGUYÊN T C HO T Đ NG Ắ Ộ Ạ

t b ng ngôn ng l p ế ằ

ng trình vi ị ả

• M t ch ữ ậ trình Java ộ ươ c biên d ch ra mã c a máy o java (mã java s đ ủ ẽ ượ bytecode). Sau đó máy o Java ch u trách nhi m ả chuy n mã java bytecode thành mã máy t ệ ng ng. ươ ứ ể

ộ ữ ậ ừ ừ

ng trình ngu n vi ươ ế ồ

ữ ậ ầ

• Java là m t ngôn ng l p trình v a biên d ch v a ị t b ng ngôn c biên c ẽ ượ

máy. thông d ch. Ch ằ ị ng l p trình Java có đuôi *.java đ u tiên đ ượ d ch thành t p tin có đuôi *.class và sau đó s đ ị trình thông d ch thông d ch thành mã ị ậ ị

1-2. JAVA SE, JRE

ệ ề ụ ứ ứ

• Java SE (Java Platform, Standard Edition): là công ngh n n h tr xây d ng các ng d ng có ch c ự ỗ ợ năng cao, t c đ và đáng tin c y ậ ố ộ

• JRE (Java Runtime environment): bao g m máy o t. Là môi ư ệ ế ậ ầ

ồ Java, các th vi n và các t p tin c n thi ng đ th c thi m t ng d ng Java. tr ể ự ộ ứ ườ ụ

1-3. JAVA ME, MIDP

• Java ME (Java Platform, Micro Edition): platform đ ể

t b di đ ng. phát tri n các ng d ng trên thi ứ ụ ể ế ị ộ

• MIDP (Mobile Information Device Profile): là môi t b di ng đ th c thi ng d ng Java trên thi ể ự ế ị ụ ứ

tr ườ đ ng.ộ

NG PHÁT TRI N JAVA

2. CÔNG C Và MÔI TR Ụ

Ể ƯỜ 2-1. JDK – Java Development Kit

- B công c phát tri n java đ ộ ể ụ ượ ở

ụ ầ

ấ ệ ng trình java. i và th c thi các ch ầ ươ ỗ

- JDK g m 2 công c quan tr ng c cung c p b i sun ấ microsystems. M c đích c a jdk là cung c p ph n ủ c yêu c u cho vi c biên m m và các công c đ ụ ượ d ch, ki m tra l ự ể ị ồ ọ

• Javac (biên d ch) • Java (thông d ch) ụ ị ị

2-1. JDK – JAVA DEVELOPMENT KIT

- Javac : đ c s d ng đ biên d ch mã ngu n c a ượ ử ụ ủ ể ồ ị

java sang d ng bytecode. ạ

- Cú pháp : javac [option] source Source là t p tin .java ậ

- Java : đ ượ ử ụ ạ

ể ủ ấ ố

c s d ng đ thông d ch và ch y các Java ị bytecode. Nó l y tên c a m t t p tin class làm đ i ộ ậ s đ th c thi ố ể ự

- Cú pháp : java [option] classname [arguments]

2-1. JDK – COMPILE VÀ RUN

B c 1: Download JDK ướ

B c 2: Cài đ t JDK ướ ặ

2-1. JDK – COMPILE VÀ RUN

B c 3: C u hình máy ấ ướ (Win 7) - Click ph i vào Computer ả - Properties - Advanced system settings - Ch n th Advanced ẻ - Environment Variables…

2-1. JDK – COMPILE VÀ RUN

ế

ế

ồ ạ ấ ọ

thêm

i variable PATH: ch n PATH và nh n Edit > ;C:\Program vào value ng d n đ n th m c ư ế ườ ụ ẫ

i variable PATH: nh n New > thêm value C:\Program và

B c 3: (ti p) ướ ph n user variables n u: Ở ầ + T n t i t ạ Files\Java\jdk1.6.0_24\bin (đ bin n i cài JDK) ơ + Ch a t n t ạ ư ồ PATH name variable Files\Java\jdk1.6.0_24\bin

2-1. JDK – COMPILE VÀ RUN

i C:\ ạ

B c 4: M Notepad và t o file HelloWorld.java t ạ ở ướ v i n i dung: ớ ộ

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello World");

}

}

2-1. JDK – COMPILE VÀ RUN

5: Biên d ch HelloWorld.java thành ị

B c ướ HelloWorld.class (dùng l nh javac) Start > Run > cmd > cd\ > javac HelloWorld.java

2-1. JDK – COMPILE VÀ RUN

ướ ệ ạ

B c 6: Ch y (dùng l nh java) java HelloWorld > xem k t quế ả

2-2. ECLIPSE – COMPILE VÀ RUN

ầ ề

c các nhà phát ễ tri n s d ng đ xây d ng nh ng ng d ng J2EE. ể ử ụ ụ ự

• Eclipse là ph n m m mi n phí, đ ượ ữ ứ ể • Eclipse SDK bao g m 3 ph n chính: ầ ồ

– Platform – Java Development Toolkit (JDT) – Plug-in Development Environment (PDE).

2-2. ECLIPSE – COMPILE VÀ RUN

B c 1: Download Eclipse ướ

2-2. ECLIPSE – COMPILE VÀ RUN

i nén t p tin v a t ậ

ướ ướ ạ

i B c 2: Gi ừ ả ả B c 3: T o project Hello World ạ - Ch y eclipse.exe - File > New > Java Project

- Tai Project name đi n “Hello World” ề

2-2. ECLIPSE – COMPILE VÀ RUN

ướ

B c 4: Thêm class HelloWorld - Click ph i vào Project Hello World > New > Class ả

2-2. ECLIPSE – COMPILE VÀ RUN

ế

ướ ặ

B c 4: (ti p) - Đ t tên class là HelloWorld - Check vào public static void main (String[] args) - Click Finish

2-2. ECLIPSE – COMPILE VÀ RUN

ướ

B c 5: Thêm vào hàm main đo n code ạ System.out.println("Hello World"); B c 6: Run và xem k t qu ướ ế ả

2-3. NH N XÉT Ậ

– T o m t file text ộ – Dùng javac đ biên d ch file text thành file .class ị ể – Dùng java đ th c thi file .class ể ự

- JDK: ạ

i h n khi s d ng giao ậ ợ ơ ử ụ

- Eclipse: m i thao tác thu n l ọ ng tác di n đ t ể ươ ệ

3. CÚ PHÁP NNLT JAVA 3-1. Package

ệ ớ ạ ạ i t o thành m t th vi n ộ ư ệ

- Vi c đóng gói các l p l dùng chung g i là package. ọ

ộ ề ớ

- M t package có th ch a m t hay nhi u l p bên trong, đ ng th i cũng có th ch a m t package khác bên trong. ồ ể ứ ể ứ ộ ộ ờ

3-1. PACKAGE

ộ ớ ấ ộ

-Đ khai báo m t l p thu c m t gói nào đ y ta ph i ả ộ ể dùng t khóa package. ừ

ả ầ ậ

-Dòng khai báo gói ph i là dòng đ u tiên trong t p tin khai báo l p. ớ

ả ộ

c l u trong cùng m t th m c. - Các t p tin khai báo l p trong cùng m t gói ph i ậ đ ượ ư ư ụ ớ ộ

3-1. PACKAGE

Ví d :ụ

package phuongtiengiaothong; class xemay { // …. }

ng trình ta ớ xemay vào ch ươ

Khi đó mu n s d ng l p s khai báo nh sau: ẽ ố ử ụ ư

import phuongtiengiaothong.xemay;

3-2. TÊN FILE, TÊN L PỚ

(Unicode), ký s ỗ ự ố

ữ ằ ấ ạ ộ ướ ‘_’ i

khóa

ừ gi a ở ữ ả

- Tên l pớ : + Bao g m m t chu i các ký t ộ ồ (Unicode), ký s . ố + Ph i b t đ u b ng m t ch cái, d u g ch d ả ắ ầ hay d u dollar '$' ấ + Không đ c trùng v i các t ượ ớ + Không có kho ng tr ng ắ - Tên file: file .java ph i có tên trùng v i tên l p ớ ả ớ

3-3. K TH A Ế Ừ

ộ ớ ữ

• M t l p con (subclass) có th k th a t t c nh ng ể ế ừ ấ ả ng th c c a m t l p khác (siêu ộ ớ ứ ủ ươ

vùng d li u và ph ữ ệ l p - superclass). ớ

m t l p đã bi ư ậ ộ ớ ớ ừ ộ ớ • Nh v y vi c t o m t l p m i t ệ ạ ế

ủ ớ

ủ ấ ớ ớ

ấ ừ ộ ớ

m t l p nào đ ớ ộ ớ

t sao cho các thành ph nầ (fields và methods) c a l p cũ cũng s thành các thành ph n (fields và methods) c a ầ ẽ l p m i. Khi đó ta g i l p m i là l p d n xu t ẫ ọ ớ ớ ớ (derived class) t l p cũ (superclass). Có th l p cũ ể ớ ừ ớ ó, nh ng ư cũng là l p đ c d n xu t t ẫ ượ ớ đ i v i l p m i v a t o thì l p cũ đó là m t l p siêu ớ ừ ạ ố ớ ớ l p tr c ti p (immediate supperclass). ớ ự ế

3-3. K TH A Ế Ừ

Dùng t extends đ ch l p d n xu t. khóa ể ỉ ớ ẫ ấ

ừ class A extends B { // … }

3-4. Interface là gì?

• Theo ph

ươ

ế

ng pháp phân c p th a k , có th ể t code ư ng ừ

ừ ế t vi ế ớ

ừ ượ  l p tr u

• Ta mu n m t l p đ

ộ ớ ượ

nhi u l p ề ớ ng mà không b kh ng ch b i tính ế ở

c th a k t ừ ế ừ ố ị

i pháp: Interface

l p cha có nh ng hành vi ch a bi ữ ớ ề  hành vi tr u t th nào ng. t ượ ố tr u t ừ ượ đ n th a k . ừ ế ơ • Gi ả

Slide 27/47

ặ ớ

ộ ớ

ng”

c m t nhóm các x lý c n

ướ

ộ ặ

ng.

ộ ớ hoàn toàn tr u t

ượ

• •

c xem nh là m t l p ộ

ư ụ ể ệ

ừ ượ ừ ế

ự ạ

Interface... Interface là m t khai báo bao g m m t t p đ c đi m g m các ộ ậ ồ h ng, các hành vi mà không mu n khai báo l p. ố ằ Interface mang ý nghĩa “nh là m t l p hoàn toàn tr u ư t ượ Interface mang ý nghĩa khai báo tr có. Interface là m t đ c đi m c a các ngôn ng OOP m i nh ư Java, C#. Interface đ Interface là m t công c đ hi n th c d ng đa th a k trong Java, C#.

Slide 28/47

Khai báo interface

ể ọ ơ ề

• Khai báo interface b ng 1 file.java, biên d ch thành file.class. • Cú pháp [modifier] interface InterfaceName { [ modifier] [ modifier] DataType Method (args); } • Ch n modifier là public đ m i n i đ u dùng đ • Không có modifier đ ch cho cùng gói/ cùng th m c truy ể ỉ

c. ượ ư ụ

c p.ậ

• Modifier trong interface NÊN là public đ d dùng.

ể ễ

Slide 29/47

Thí d :ụ

ẽ ề ầ

ng

Nh n xét: Các hình v đ u c n -h ng PI -tác v tính di n tích, ụ -tính chu vi -mà ta không mu n t o ố ạ l p tr u t ừ ượ ớ  T o 1 interface. ạ

Slide 30/47

Thí d : interface v nh p xu t d li u ấ ữ ệ ề

• Ta nghĩ r ng, m i l p trong ph n m m ta đang xây d ng đ u c n nh p

ề ầ

xu t d li u.

ấ ữ ệ  T o m t interface cho vi c này.

ỗ ớ ạ

Slide 31/47

Hi n th c interface trong m t l p ộ ớ

• M t l p có th hi n th c nhi u interface (có

• 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. ự

d ng đa th a k ).

ộ ớ ộ ộ ớ ạ

• Cú pháp xây d ng m t l p có hi n th c

ộ ớ

ừ ế ự

interface:

Slide 32/47

Cú pháp xây d ng l p có hi n th c interface

implements Interface1, interface2,...

[modifier] class Tên extends L pCha {

ự ủ

Th tứ ự không quan tr ngọ

}

Slide 33/47

Thí dụ

interface ủ

Khai báo method trong interface friendly ho c public. ph i là ả ặ Suy nghĩ v đ c đi m: ề ặ ể là quy đ nh v các kh năng c a m t ề l p.ớ

M t l p c th có ộ ớ ụ ể khai báo inplements m t interface mà quên ch a hi n th c ư hành vi c a ủ interface Error

Slide 34/47

Thí d :ụ

ừ ượ

L p tr u t ng có th ớ ể ch a c th các method ư ụ ể c a interface ủ

Modifier c a hành vi ủ c th c a các method ụ ể ủ trong interface ph i là ả public

Slide 35/47

Thí d : Bi n interface ế

Khai báo bi n thông ế qua interface

c dùng

ế

ỉ ượ

Bi n interface ch đ v i các hành vi có trong interface ớ

Slide 36/47

Thí d : 2 interface c th ụ ể ụ

interface cho vi c tính toán các hình v

interface cho vi c nh p xu t đ i t

ng

ấ ố ượ

Slide 37/47

Thí d : S d ng 2 interface

ụ ử ụ

Slide 38/47

Interface th a kừ ế

i các khai báo hành vi.

ể ừ ế ộ ạ

• Interface có th th a k interface cha • Interface con là h i l • Cú pháp: interface InterfaceSon extends InterfaceFather { < các khai báo thêm> } • N u m t l p implements interface con thì ph i c ả ụ

Slide 39/47

th hóa c các method có trong interface cha. ế ể ộ ớ ả

Thí dụ

Slide 40/47

Collections Framework

• Collections Framework bao g m nhi u l p và

ề ớ

ồ giao di n trong khung c ng tác.

ủ ự

• Khung c ng tác c a các Collection Java d a trên tri n khai th c hi n c th m t s giao di n đ nh nghĩa các ki u s u t p (collection)

ệ ụ ể ộ ố ể ư ậ

ể ị

41

• Collection là đ i t

ng có kh năng ch a các

Collection ố ượ

ng khác.

đ i t ố ượ

ng trên collection

ườ

• Các thao tác thông th – Thêm/Xoá đ i t ố ượ – Ki m tra m t đ i t ộ ố ượ

ng có ng vào/kh i collection ỏ trong collection ở

ng t ể không ấ ộ ố ượ ừ

collection ng trong collection ố ượ

42

– L y m t đ i t – Duy t các đ i t ệ – Xoá toàn b collection ộ

Collections Framework

• Các collection đ u tiên c a Java: ầ

ộ ả

Java 1.2) ễ

– Là m t ki n trúc h p nh t đ bi u di n và thao ấ ể ể ộ ợ

– M ngả – Vector: M ng đ ng – Hastable: B ng băm • Collections Framework (t ế tác trên các collection.

– Giúp cho vi c x lý các collection đ c l p v i ớ ộ ậ

43

t bên trong c a chúng. bi u di n chi ti ễ ể ủ ệ ử ế

Collections Framework

• M t s l

ươ

i ích c a Collections Framework ủ ộ ố ợ – Gi m th i gian l p trình ậ ờ ả – Tăng c ng hi u năng ch ng trình ệ ườ – D m r ng các collection m i ễ ở ộ ớ – Khuy n khích vi c s d ng l ạ ế

44

i mã ch ng trình ệ ử ụ ươ

Collections Framework

• Collections Framework bao g mồ

– Interfaces: Là các giao ti p th hi n tính ch t ấ ể ệ ế

ể ư List, Set,

c a các ki u collection khác nhau nh ủ Map.

– Implementations: Là các l p collection có s n ẵ ớ

c cài đ t các collection interfaces. đ ượ

ặ – Algorithms: Là các ph ng th c tĩnh đ x lý ươ ứ

ế

45

ể ử trên collection, ví d : s p x p danh sách, tìm ụ ắ ph n t l n nh t... ầ ử ớ ấ

Interfaces

<> Collection

<> Map

<> Set

<> List

<> SortedMap

<> SortedSet

46

Giao ti p Collection

ế

• Cung c p các thao tác chính trên collection nh ư

ầ ử

• N u l p cài đ t Collection không mu n h tr các thao

thêm/xoá/tìm ph n t ... Ví d : ụ – boolean add(Object element); – boolean remove(Object element); – boolean contains(Object element); – int size(); – boolean isEmpty(); ế ớ

ỗ ợ

ặ ổ

tác làm thay đ i collection nh add, remove, clear... nó có ư th tung ra ngo i l

UnsupportedOperationException.

ạ ệ

47

Giao ti p Set ế

• Set k th a t

Collection, h tr các thao tác x lý trên

ế ừ ừ

ỗ ợ

collection ki u t p h p ợ

ể ậ

ng th c riêng ngoài các ph

ng

ươ

th c k th a t

ươ Collection.

• Set không có thêm ph ứ ế ừ ừ

Giao Ti p ế Set đ nh nghĩa b Collection không có ph n t

ầ ử

trùng l pắ

48

Giao ti p SortedSet

ế

ế ừ ừ có th so sánh đ

• SortedSet k th a t ể ầ ử

Set, nó h tr thao tác trên t p h p ậ ng đ a vào ư

ố ượ ế ộ

ỗ ợ c. Các đ i t ượ ặ ả

ặ ớ

các ph n t trong m t ộ SortedSet ph i cài đ t giao ti p Comparable ặ SortedSet ph i nh n m t Comparator ho c l p cài đ t trên ki u c a đ i t

ng đó.

ể ủ ố ượ

• M t s ph

ộ ố ươ

ứ ủ SortedSet:

đ u tiên (nh nh t) cu i cùng (l n nh t)

ầ ử ầ ầ ử ố

ấ ấ

ỏ ấ ấ ớ ộ ậ

n m trong kho ng t

e1 t

i e2.

t

ng th c c a – Object first(); // l y ph n t – Object last(); // l y ph n t – SortedSet subSet(Object e1, Object e2); // l y m t t p các ph n ớ

ử ằ

49

Giao ti p List ế

Collection, nó cung c p thêm các ph

ng

ế ừ ừ

Object đ

ượ ế

c x p theo ch ỉ

• List k th a t ươ th c đ x lý collection ki u danh sách (Danh sách là ứ ể ử ể m t collection v i các ph n t ầ ử ộ s ).ố

• M t s ph

ộ ố ươ

ng th c c a List ứ ủ

– Object get(int index); – Object set(int index, Object o); – void add(int index, Object o); – Object remove(int index); – int indexOf(Object o); – int lastIndexOf(Object o);

50

Duy t collection

trong collection có th đ

• Các ph n t

ể ượ

c duy t thông ệ

• Các l p cài đ t Collection cung c p ph

ầ ử qua Iterator. ớ

ươ

ng th c tr v ả ề

iterator trên các ph n t

ấ c a chúng.

ầ ử ủ

Collection c;

...

Iterator it = c.iterator();

51

Duy t collection

m t collection.

ầ ự ộ

• Iterator cho phép duy t tu n t • Các ph ng th c c a Iterator:

ứ ủ

ươ

– boolean hasNext(); – Object next(); – void remove();

• Ví d :ụ

Iterator it = c.iterator(); while ( it.hasNext() ) { Point p = (Point) it.next(); System.out.println( p.toString() ); }

52

Giao ti p Map ế

• Giao ti p ế Map cung c p các thao tác x lý trên ấ nh nghĩa collection có các c p ị

• M t s ph

các b ng ánh x . đ ả khóa - giá tr . ị ộ ố ươ

ng th c c a Map ứ ủ

– Object put(Object key, Object value); – Object get(Object key); – Object remove(Object key); – boolean containsKey(Object key); – boolean containsValue(Object value); – ...

53

Giao ti p Map ế

• Map cung c p 3 cách view d li u: ữ ệ ấ

Set keySet(); // Tr v các khoá

ả ề – View các giá tr : ị

Collection values(); // Tr v các giá tr ị

ả ề

– View các khoá:

• Sau khi nh n đ – 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 đ duy t các ph n t ể

54

c a nó. ộ ầ ử ủ ệ ể

Giao ti p SortedMap

ế

ế

Map, nó cung c p thao c.

• Giao ti p SortedMap k th a t ả

ấ ế ừ ừ tác trên các b ng ánh x v i khoá có th so sánh đ ạ ớ

ượ

ư

• Gi ng nh SortedSet, các đ i t ố ượ ế ả

ặ ớ ố

ặ ả

ặ ng khoá.

ng khoá đ a vào trong ư SortedMap ph i cài đ t giao ti p Comparable ho c l p cài đ t SortedMap ph i nh n m t Comparator trên đ i ậ t ượ

55

Implementations

• Các cài đ t trong

l p collection có s n trong Java. ớ

Chúng cài đ t các

Collections Framework chính là các ẵ collection interface trên đ th ể ể ở hi n các c u trúc d li u c th . Ví d : m ng đ ng, ữ ệ ụ ể ộ ụ danh sách liên k t, cây đ đen, b ng băm... ỏ

ế

56

Implementations

LinkedList

List

ArrayList

HashSet

LinkedHashSet

Set

SortedSet

TreeSet

HashMap

Map

LinkedHashMap

SortedMap

TreeMap

57

Mô t

các cài đ t ặ

• ArrayList: M ng đ ng, n u các ph n t

thêm vào v

t

ầ ử

ế

ượ

ẽ ự ộ

đ ng tăng kích c . ỡ

• LinkedList: Danh sách liên k t 2 chi u. H tr thao tác

ả quá kích c m ng, m ng s t ỡ ả ế

ỗ ợ

trên đ u và cu i danh sách. ố

ế ợ .

các ph n t

• HashSet: B ng băm. • LinkedHashSet: B ng băm k t h p v i linked list nh m ả ầ ử

đ m b o th t ả

• TreeSet: Cây đ đen (red-black tree).

ứ ự ỏ

58

Mô t

các cài đ t ặ

ặ ủ

đ m b o th t ả

ầ ử

ứ ự

• HashMap: B ng băm (cài đ t c a Map). • LinkedHashMap: B ng băm k t h p v i linked list nh m ế ợ ớ ả (cài đ t c a Map). ặ ủ • TreeMap: Cây đ đen (cài đ t c a Map). ặ ủ

các ph n t ỏ

59

Ví d 1: TreeSet

// This program sorts a set of names import java.util.*;

public class TreeSetTest1 { public static void main(String[] args) { SortedSet names = new TreeSet(); names.add(new String("Minh Tuan")); names.add(new String("Hai Nam")); names.add(new String("Anh Ngoc")); names.add(new String("Trung Kien")); names.add(new String("Quynh Chi")); names.add(new String("Thu Hang")); System.out.println(names); } }

60

Ví d 2: Student Set

class Student implements Comparable { private String code; private double score;

public Student(String code, double score) { this.code = code; this.score = score; }

public double getScore() { return score; }

public String toString() { return "(" + code + "," + score + ")"; }

61

Ví d 2: Student Set

public boolean equals(Object other) { Student otherStu = (Student) other; return code.equals(otherStu.code); }

public int compareTo(Object other) { Student otherStu = (Student) other; return code.compareTo(otherStu.code); } }

62

Ví d 2: Student Set

// This programs sorts a set of students by name and then by score import java.util.*;

public class TreeSetTest2 { public static void main(String[] args) { SortedSet stu = new TreeSet(); stu.add(new Student("A05726", 8.5)); stu.add(new Student("A06338", 7.0)); stu.add(new Student("A05379", 7.5)); stu.add(new Student("A06178", 9.5));

System.out.println(stu);

SortedSet sortByScore = new TreeSet(new Comparator() // create an inner class

63

Ví d 2: Student Set

{ public int compare(Object a, Object b) { Student itemA = (Student) a; Student itemB = (Student) b; double scoreA = itemA.getScore(); double scoreB = itemB.getScore();

if ( scoreA < scoreB )

return -1; else return 1;

} }); // end of inner class

sortByScore.addAll(stu); System.out.println(sortByScore); } }

64

Ví d 3: HashMap

// This program stores a phone directory by hashing import java.util.*;

public class MyMapTest { public static void main(String[] args) { Map phoneDir = new HashMap(); phoneDir.put("5581814", new String("Dept. Informatics")); phoneDir.put("8584490", new String("Defense Staff")); phoneDir.put("8587346", new String("Administrative Staff")); phoneDir.put("7290028", new String("Student Club"));

// print all entries System.out.println(phoneDir);

// remove an entry phoneDir.remove("8584490");

65

Ví d 3: HashMap

// replace an entry phoneDir.put("7290028", new String("International Relation"));

// look up a value System.out.println(phoneDir.get("5581814"));

// iterate through all entries Set entries = phoneDir.entrySet(); Iterator iter = entries.iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); String key = (String) entry.getKey(); String value = (String) entry.getValue(); System.out.println("key=" + key + ", value=" + value); } } }

66

Các l p bao ớ

• Collection ch làm vi c trên các Object. Nh ng ki u d ể ữ

ư

ệ ơ ả

ự ế

li u c b n nh : byte, short, int, long, double, float, char, c tr c ti p vào Collection mà boolean không th đ a đ ể ư ượ . ph i thông qua các l p bao • Các l p bao: Byte, Short, Int, Long, Double, Float, Char,

Boolean.

• Ví d :ụ

– Integer intObject = new Integer(9); – int value = intObject.intValue();

67

Algorithms

c cài đ t nh nh ng ph ng ượ ư ữ ươ

s • Các thu t toán đ ặ ậ th c tĩnh c a l p Collection ủ ớ

– static Object max(Collection c) – static Object min(Collection c) – static int binarySearch(List list, Object key) – static void sort(List list) – static void shuffle(List list) – các ph – các ph

ng th c t o synchronized collection ng th c t o read-only collection

ứ ạ ứ ạ

ươ ươ

68

• M t s ph ng th c c a Collections: ứ ộ ố ươ ứ ủ

Ví d : Tr n bài

import java.util.*;

public class MyShuffleTest { public static void main(String[] args) { List numbers = new ArrayList(52);

for (int i = 1; i <= 52; i++) numbers.add(new Integer(i));

System.out.println("Before shuffling:" + numbers + "\n");

Collections.shuffle(numbers); System.out.println("After shuffling:" + numbers + "\n"); } }

69

Collections Framework

c cài đ t b sung thêm các collection

– Là các l p cũ đ

ượ

ặ ổ

ớ interface.

– Vector: Có th thay b ng ArrayList – Hastable: Có th thay b ng HashMap ể

• Legacy Implementations

– Là các l p tr u t

ng đã cài đ t các collection interface

ừ ượ

mà ta có th k th a đ t o ra các collection m i.

ể ế ừ ể ạ

– AbstractCollection, AbstractSet, AbstractList...

70

• Abstract Implementations