Вы находитесь на странице: 1из 30

Chng VI

Cc lp c s v cc cu trc d liu
Chng ny cp n: Cu trc mng trong Java; Cc lp c s ca Java trong gi java.lang: Object, Wrapper, Math, String v StringBuffer; Mt s cu trc d liu ph dng: Cc giao din Collection, Set, List, Map, SortedSet, SortedMap v mt s lp ci t chng.

6.1 Cu trc mng trong Java


Trong cc ngn ng lp trnh truyn thng nh C / C++, cu trc mng (array) l mt cu trc d liu c kch thc (s phn t) c nh cc phn t cng kiu. Bi v b nh ginh cho cu trc mng phi c xc nh ngay t lc dch nn s phn t ca n phi c c nh trc (khi to bi hng - constant). Cu trc mng nh th c cc hn ch: Rt kh kim sot khi ch s cc phn t vt ra khi phm vi xc nh. V d, trong chng trnh C/C++ khng th cm vic truy nhp n phn t ngoi phm vi xc nh nh phn t A[100] ca mng khai bo: int A[100];

Lu : Ch s cc phn t ca mng trong C/C++ v Java c bt u t 0. Li


vt ra ngoi phm vi ca mng l rt kh kim sot. Vic qun l b nh ca cc cu trc mng cng rt phc tp, nu khng t chc tt th chng trnh ln c th d b dng v thiu b nh. Trong Java, cu trc mng l mt lp c bin d liu thnh phn cng khai (public) length, xc nh kch thc ca mng v c cc phn t vi kiu bt k (nguyn thy hoc lp i tng).

Khai bo cc bin mng


Cc bin mng c th khai bo theo mt trong hai dng sau: <Kiu cc phn t>[] <Tn mng>; <Kiu cc phn t> <Tn mng>[]; Trong <Kiu cc phn t> c th l kiu nguyn thy hoc l kiu lp (tn lp).

Lu :
Kch thc ca mng cha xc nh khi khai bo,

- 115 -

iu quan trng cn phn bit trong cu trc mng ca Java l vic khai bo bin mng th cha hon ton to ra cu trc m mi khai bo cu trc tham chiu. V d: int mangInt[], bienInt; BongDen[] dayBong, hangBong; // (1) // (2)

Bin mng mangInt c khai bo theo kiu cc phn t l int (kiu nguyn thy), hai bin mng dayBong, hangBong c khai bo vi cc phn t c kiu tham chiu lp BongDen ( chng V).

Lu : Khi k hiu [] ng ngay sau kiu khai bo th tt c cc bin ng sau u l bin mng, v d (2), dayBong v hangBong ng sau BongDen[] u l bin
mng.

To lp i tng mng
to lp i tng mng th phi xc nh s phn t ca mng v phi s dng ton t new. <Tn mng> = new <Kiu cc phn t >[<S phn t>]; Trong <Kiu cc phn t> l kiu tng thch vi kiu m mng khai bo. Gi tr cc tiu ca <S phn t> l 0, ngha l trong Java c th to ra mng 0 phn t. Cc bin mng khai bo (1), (2) c th c to lp nh sau: mangInt = new int[100]; // Mng 100 phn t kiu int (3) dayBong = new BongDen[10];// Mng 10 i tng ca BongDen (4) hangBong = new BongDen[15];// Mng 15 i tng ca BongDen Nhiu khi chng ta c th kt hp c khai bo vi to lp mng nh sau: <Kiu cc phn t 1> <Tn mng>[] = new <Kiu cc phn t 2>[<S phn t>]; Khai bo v to lp mng <Tn mng> kiu <Kiu cc phn t 1> cha <S phn t> cc phn t c <Kiu cc phn t 2>.

Lu :
<Kiu cc phn t 1> v <Kiu cc phn t 2> l hai kiu tng thch vi nhau. Nu mng c kiu nguyn thy th hai kiu phi trng nhau. Ngc li, i vi kiu lp th <Kiu cc phn t 2> phi l lp con ca <Kiu cc phn t 1>. Tt nhin mt lp cng c xem l lp con ca chnh n. Khi mt mng c to lp th tt c cc phn t ca n c khi to gi tr mc nh (0 hoc 0.0 i vi kiu s, false i vi kiu boolean, null cho kiu lp). V d: float mangFloat[] = new float[20]; // Cc phn t c gn tr mc nh 0.0 Object[] dayDen = new BongDen[5]; - 116 -

// Cc phn t c gn mc nh null

Khi to cc mng
Java cung cp c ch cho php khai bo, to lp v gn ngay cc gi tr ban u cho cc phn t ca mng: <Kiu cc phn t >[] <Tn mng> = {<Cc gi tr ban u>}; V d: int[] mangInt = {1, 3, 5, 7, 9}; To ra mangInt c 5 phn t vi phn t u c gi tr l 1 (mangInt[0] = 1), phn t th hai l 3 (mangInt[1] = 3) , v.v. Object[] dayDT = {new BongDen(), new BongDen(), null}; Mng dayDT c khai bo l mng cc i tng ca lp Object, c to lp lu gi 3 i tng. Hai i tng u c khi to bi ton t to lp i tng ca lp BongDen, cn phn t th ba l null. char[] charArr = {a, b, a}; // mng 3 k t v hon ton khc vi aba

S dng mng
Ton b cu trc mng c tham chiu thng qua tn ca mng, cn cc phn t ca n c th truy nhp c bi ton t [].Ch s cc phn t ca mng nh nht l 0 v nh hn kch thc ca n l <Tn mng>.length. Phn t th i ca mng l phn t c ch s i - 1 (<Tn mng>[i-1]). Khi truy nhp n cc phn t ca mng, Java s t ng kim tra ch s ca cc phn t xem c nm trong phm vi xc nh hay khng, do vy ngi lp trnh khng phi bn tm n vn vt khi phm vi ca mng nh i vi cc ngn ng khc, nh C/C++. Nu ch s vt ra ngoi phm vi xc nh (nh hn 0, hay ln hn hoc bng kch thc ca mng <Tn mng>.length) th h thng s gi ti hm x l tnh hung ngoi l ArrayIndexOutOfBoundsException c th tm li v x l theo cu trc try-catch-finally (Chng V). V d 6.1 M t cch to ra nm mng 15 cc phn t ngu nhin v lu li nm gi tr cc tiu ca chng in ra mn hnh. Lu , y chng ta c th s dng cc hm ca lp Math tnh gi tr cc tiu, sinh s ngu nhin.
class Mang { public static void main(String args[]){ // Khai bo v to lp mng double[] mang1 = new double[5]; // (1) double[] mang2 = new double[15]; // (2) for(int j = 0; j < mang1.length; ++j){ // (3) randomize(mang2); // To lp mng ngu nhin mang1[j] = cucTieu(mang2); // Tm gi tr cc tiu }

- 117 -

// In cc gi tr cc tiu ra mn hnh for(int j = 0; j < mang1.length; ++j){ System.out.println(mang1[j]); } } public static void randomize(double[] mang){ for(int j = 0; j < mang.length; ++j) mang[j] = Math.random() * 100.0; } public static double cucTieu(double[] mang){ double giaTriMin = mang[0]; for(int j = 0; j < mang1.length; ++j) giaTriMin = Math.min(giaTriMin, mang[j]); return giaTriMin; } }

// (4)

// (5)

// (6)

Mng nhiu chiu


Cc phn t ca mng c th tham chiu ti cc mng khc. Trong Java, mng ca mng (mng nhiu chiu) c nh ngha nh sau: <Kiu cc phn t>[][]...[] <Tn mng>; hoc <Kiu cc phn t> <Tn mng>[][]...[]; Ton t [] c th s dng c hai v tr, v d int[][] mang1; tng ng vi int mang1[][]; v cng tng ng vi int[] mang1[]; Thng thng chng ta c th kt hp c khai bo vi thit lp mng nhiu chiu tng t nh i vi mng n. int[][] mangA = new int[4][5]; // Ma trn c 4 hng, 5 ct Lnh trn thit lp mng mangA c 4 phn t, mi phn t li l mng mangA[i] c 5 phn t, vi i = 1, 2, 3, 4. Nh th mng hai chiu cn c gi l mng ca mng. Phn t th j ca mangA[i], j = 1, 2, ..., 5 c truy nhp bi mangA[i][j]. Do vy, kch thc ca mangA l mangA.length = 4 v mi phn t ca n li l mng c kch thc l mangA[i].length = 5, i = 1, 2, ..., 4. Hn th na, mng nhiu chiu c th c thit lp v khi to tng minh cc gi tr ban u nh i vi mng n. - 118 // Mng hai chiu

double[][] maTran = { {1, 2, 3, 4}, // hng 1 {0, 2, 0, 0}, // hng 2 {0, 0, 3, 0}, // hng 3 {0, 0, 0, 4}, // hng 4 };

Lu : Cc mng trong mng nhiu chiu khng nht thit phi c s phn t ging nhau. V d, mng dayDen sau c 5 phn t l cc mng c kch thc khc nhau.
BongDen[][] dayDen = { {new BongDen(), null, new BongDen()},// Hng c 3 phn t (1) {null, new BongDen()}, // Hng c 2 phn t (2) {}, // Hng c 0 phn t (3) {new BongDen()}, // Hng c 3 phn t (4) {null} // Hng cha c to lp (5) }; Khng nn truy nhp n nhng thnh phn ca mng nu n cha c xc nh. V d, nu cha gn g cho dayDen[4] th s nhn c NullPointerException nu bn nh truy nhp n dayDen[4].length. trnh li th thng chng ta nn kim tra trng thi ca cc phn t. If (dayDen[4] != null) { // Truy nhp n cc phn t ca dayDen[4] }

Lu : Nh chng ta khng nh t u, tt c cc lp u l lp con ca Object, trong mng cng l lp con ca Object. Do vy, gia mng v Object c th thc
hin chuyn i kiu: + Chuyn t kiu mng v Object (M rng kiu), + Chuyn t Object sang kiu mng ( Thu hp kiu). V d:
class EpKieu{ static public void main(String[] args){ int[] a = new int[5]; Object o; o = a; // int[] l con ca Object int[] b = new int[5]; b = (int[])o; // Xem i tng ca Object nh l mng int[] } }

Ngoi ra cng cn lu thm l cu trc mng bo ton cu trc phn cp gia cc lp, ngha l nu B l lp con ca lp A th B[] cng l lp con ca lp A[]. - 119 -

6.2 Cc lp c bn ca Java
Phn ny cp n nhng lp c bn, hay s dng ca Java nh: Object, cc lp Wrapper (lp bao gi hay lp nguyn thy), Math, String v lp StringBuffer. Nhng lp ny c xy dng trong gi java.lang lun mc nh c np vo chng trnh. Tt c u l lp con ca Object v c xy dng theo cu trc nh trong hnh H6-1.
Object

Boolean

Character

Void

Number

Math

String

StringBuffer

...

Byte

Short

Integer

Long

Float

Double

Hnh H6-1 Mt phn cu trc phn cp cc lp trong gi java.lang

6.2.1 Lp Object
Tt c cc lp c xy dng trong cc chng trnh Java u hoc l trc tip hoc gin tip l m rng ca Object. y l lp c s nht, nh ngha hu nh tt c nhng hm thnh phn c s cc lp con chu ca n s dng trc tip hoc vit nh cp chng 3. Object cung cp cc hm sau:

int hashCode()
Khi cc i tng c lu vo cc bng bm (hash table), hm ny c th s dng xc nh duy nht gi tr cho mi i tng. iu ny m bo tnh nht qun ca h thng khi thc hin chng trnh.

Class getClass()
Tr li tn lp ca i tng hin thi.

boolean equals(Object obj) Cho li kt qu true khi i tng hin thi v obj l cng mt i tng. Hm ny
thng c vit cc lp con cho ph hp vi ng cnh so snh bng nhau trong cc lp m rng .

protected Object clone() throws CloneNotSupportedException


i tng mi c to ra c cng cc trng thi nh i tng hin thi khi s dng clone(), ngha l to ra bn copy mi ca i tng hin thi.

String toString()

- 120 -

Nu cc lp con khng vit hm ny th n s tr li dng biu din vn bn (textual) ca i tng. Hm println() lp PrintStream s chuyn cc i s ca n sang dng vn bn khi s dng hm toString().

protected void finalize() throws Throwable


Hm ny c gi ngay trc khi i tng b dn vo thng rc, ngha l trc khi i tng b hu b.

6.2.2 Cc lp nguyn thy (Wrapper)


Cc gi tr nguyn thy khng phi l i tng trong Java. c th thao tc c trn cc gi tr nguyn thy (gi tr s v gi tr logic) th gi java.lang cung cp cc lp bao gi (Wrapper) cho tng kiu d liu nguyn thy (gi tt l lp nguyn thy). Cc lp nguyn thy c nhng c tnh chung sau: 1. Cc ton t to lp chung. Cc lp nguyn thy (tr lp Character ch c mt ton t to lp) u c hai ton t to lp: Ton t to lp s dng gi tr nguyn thy to ra i tng tng ng Character charObj = new Character(a); Boolean boolObj = new Boolean(true); Integer intObj = new Integer(2002); Float floatObj = new Float(3.14F); Double doubleObj = new Double(3.14); Ton t th hai: chuyn cc i tng lp String biu din cho cc gi tr nguyn thy v cc lp tng ng. Cc ton t ny s cho qua NumberFormatException khi tham bin kiu String khng hp l. Boolean boolObj = new Boolean(true); Integer intObj = new Integer(2002); Float floatObj = new Float(3.14F); Double doubleObj= new Double(3.14); 2. C cc hm tin ch chung: valueOf(String s), toString(), typeValue(), equals(). Mi lp (tr lp Character) u nh ngha hm static valueOf(String s) tr li i tng tng ng. Cc hm ny u cho qua NumberFormatException khi tham bin kiu String khng hp l. Boolean boolObj = Boolean.valueOf(true); Integer intObj = Integer.valueOf(2002); Float floatObj = Float.valueOf(3.14F); Double doubleObj= Double.valueOf(3.14); Cc lp vit hm toString() tr li l cc i tng String biu din cho cc gi tr nguyn thy dng xu. String charStr = charObj.toString(); // a String boolStr = boolObj.toString(); // true String intStr = intObj.toString(); // 2002 - 121 -

String doubleStr = doubleObj.toString(); // 3.14 Cc lp nh ngha hm typeValue() tr li cc gi tr nguyn thy tng ng vi cc i tng nguyn thy. boolean b = boolObj.charValue(); // true int i = intObj.intValue(); // 2002 float f = floatObj.floatValueOf(); // 3.14F double d = doubleObj.doubleValueOf(); // 3.14 char c = charObj.charValue(); // a Cc lp vit hm equals() thc hin so snh bng nhau ca cc i tng nguyn thy. Character charObj = new Character(a); boolean charTest = charObj.equals(b); // false Integer intObj1 = Integer.valueOf(2010); boolean intTest = intObj.equals(intObj1); // false

Lp Boolean
Lp ny nh ngha hai i tng Boolean.TRUE, Boolean.FALSE biu din cho hai gi tr nguyn thy true v false tng ng.

Lp Character
Lp Character nh ngha hai gi tr cc tiu, cc i Character.MIN_VALUE, Character.MAX_VALUE v cc gi tr kiu k t Unicode. Ngoi ra lp ny cn nh ngha mt s hm static x l trn cc k t: static boolean isLowerCase(char ch)// true nu ch l k t thng static boolean isUpperCase(char ch)// true nu ch l k t vit hoa static boolean isDigit(char ch) // true nuch l ch s static boolean isLetter(char ch) // true nu ch l ch ci static boolean isLetterOrDigit(char ch) // true nu ch l ch hoc l s static char toUpperCase(char ch)// Chuyn ch v ch vit hoa static char toLowerCase(char ch)// Chuyn ch v ch vit thng static char toTitleCase(char ch)// Chuyn ch v dng tiu .

Cc lp nguyn thy
Cc lp Byte, Short, Integer, Long, Float, Double l cc lp con ca lp Number. Trong cc lp ny u xc nh hai gi tr: <Lp nguyn thy>.MIN_VALUE <Lp nguyn thy>.MAX_VALUE l cc gii hn ca cc s trong kiu . V d, - 122 -

byte minByte = Byte.MIN_VALUE; int maxInt = Integer.MAX_VALUE;

// -128 // 2147483647

Trong mi lp nguyn thy c hm typeValue() chuyn cc gi tr ca cc i tng nguyn thy v gi tr s:


byte byteValue() short shortValue() int intValue() long longValue() float floatValue() double doubleValue()

Trong mi lp nguyn thy cn c hm static parseType(String s) chuyn cc gi tr c biu din di dng xu v cc gi tr s:


byte value1 = Byte.parseByte(16); int value2 = Integer.parseInt(2002); double value3 = Double.parseDouble(3.14);

V d 6.2 Vit chng trnh nhp vo mt dy s ty v sp xp theo th t tng dn.


import java.io.*; class SapXep{ static int[] day; static void nhap(){ String str; int n = day.length; DataInputStream stream = new DataInputStream(System.in); System.out.println("Nhap vao " + n + " so nguyen"); for (int k = 0; k < n; k++){ try{ System.out.print(k + ": ); str = stream.readLine(); day[k] = Integer.valueOf(str).intValue(); }catch(IOException e){ System.err.println("I/O Error!"); } } } static void hienThi(){ int n = day.length; for (int k = 0; k < n; k++) System.out.print(day[k] + " "); System.out.println(); } static void sapXep(){ int x, max, k; for(int i =day.length-1; i > 0; i--){

- 123 -

max = day[i];k = i; for (int j = 0; j < i; j++) if (max < day[j]){ max = day[j]; k = j; } day[k] = day[i]; day[i] = max; } } public static void main(String[] args){ String str; int n; DataInputStream stream = new DataInputStream(System.in); System.out.print("\nCho biet bao nhieu so nhap vao: "); try{ str = stream.readLine(); }catch(IOException e){ System.err.println("I/O Error!"); str = "0"; } n = Integer.valueOf(str).intValue(); SapXep.day = new int[n]; nhap(); sapXep(); System.out.println("Day so duoc sap xep: "); hienThi(); } }

Lp Void
Lp ny k hiu cho i tng ca lp Class biu din cho gi tr void.

6.2.3 Lp Math
Lp final class Math nh ngha mt tp cc hm tnh thc hin cc chc nng chung ca ton hc nh cc php lm trn s, sinh s ngu nhin, tm s cc i, cc tiu, v.v. Lp final class Math cn cung cp nhng hng s nh s e (c s ca logarithm), s pi thng qua Math.E v Math.PI.

Cc hm lm trn v x l cc gi tr gii hn
static int abs(int i) static long abs(long l) static float abs(float f) static double abs(double d)
- 124 -

Hm abs() c np chng tr li gi tr tuyt i ca i s.

static double ceil(double d) Hm ceil() tr li gi tr nh nht kiu double m khng nh hn i s v li bng s nguyn. V d ceil(3.14) cho gi tr 4.0 l s trn trn ca i s. static double floor(double d) Hm floor() tr li gi tr ln nht kiu double m khng ln hn i s v li bng s nguyn. V d floor(3.14) cho gi tr 3.0 l s sn di ca i s. static int round(float f d) static long round(double d) Hm round() c np chng tr li s nguyn gn nht ca i s. static int max(int a, int b) static long max(long a, long b) static float max(float a, float b) static double max(double a, double b) Hm max() c np chng tr li gi tr cc i ca hai i s. static int min(int a, int b) static long min(long a, long b) static float min(float a, float b) static double min(double a, double b) Hm min() c np chng tr li gi tr cc tiu ca hai i s.

Cc hm ly tha
static double pow(double d1, double d2) Hm pow() tr li gi tr l ly tha ca d1 v d2 (d1d2). static double exp(double d) Hm exp() tr li gi tr l lu tha c s e v s m d (ed). static double log(double d) Hm log() tr li gi tr l l-ga-rit t nhin (c s e) ca d. static double sqrt(double d) Hm sqrt() tr li gi tr l cn bc hai ca d , hoc gi tr NaN nu i s m.

Cc hm lng gic
static double sin(double d) Hm sin() tr li gi tr l sine ca gc d c cho di dng radian. static double cos(double d) Hm cos() tr li gi tr l cose ca gc d c cho di dng radian. static double tan(double d) Hm tan() tr li gi tr l tangent ca gc d c cho di dng radian.
- 125 -

Hm sinh s ngu nhin


static double random() Hm random() cho li gi tr l s ngu nhin trong khong t 0.0 n 1.0.

6.3 Lp String
Vic x l cc xu k t trong Java c h tr bi hai lp String v StringBuffer. Lp String dng cho nhng xu k t bt bin, ngha l nhng xu ch c v chng c to lp hay khi to gi tr u tin sau khng thay i. Lp StringBuffer c s dng i vi nhng xu k t ng, c th thay i ty .

To lp v khi to cc xu
Lp final class String c mt s ton t to lp v khi to gi tr ca cc i tng ca lp String da trn cc kiu ca cc i s. Ring i vi lp String trong Java cn s dng cch to lp v khi to xu theo cch truyn thng (khng s dng ton t to lp) da vo dy cc k t nh: String str = Dung dong den toi; Cc cch to lp khc u s dng cc ton t to lp String() c np chng theo cc i s. String(String s) String(<Kieu>[] mang) String(StringBuffer buf) V d:
byte[] bytes = {97, 98,98,97}; char[] characters = {a, b, b,a}; StringBuffer buff = new StringBuffer(abba); String byteStr = new String(bytes);// Chuyn mng bytes v xu String charStr = new String(charactes); String buffStr = new String(buff); String str = new String(abba);

c tng k t trong xu
int length()
Hm length() cho kt qu l s cc k t trong xu cn c gi l kch thc ca xu.

char charAt(int index) Hm charAt(int index) cho li k t th index (bt u t 0) ca xu hin thi (0 index length()). Nu index vt ra khi phm vi xc nh th h thng s cho qua ngoi l StringIndexOutOfBoundsException.

- 126 -

V d 6.3 S dng cc hm length() v charAt() m s ln lp ca cc k t trong xu, k c du cch.


public class Dem{ public static void main(String[] args){ int[] mangDem = new int[Character.MAX_VALUE]; String str = Khong duoc dung den toi!; for (int i = 0; i < str.length(); i++) // (1) try{ mangDem[str.charAt(i)]++; // (2) }catch(StringIndexOutOfBoundsException e){ System.out.println(Chi so vuot khoi gioi han); } for (int i = 0; i < mangDem.length; i++) if (mangDem[i] != 0) System.out.println((char)i + : + mangDem[i]); } }

So snh cc xu
Cc k t c so snh da trn cc gi tr m Unicode. Hai xu c so snh theo th t t in bng cch so snh hai k t tng ng ca hai xu . Xu abba ng trc (nh hn) xu aha v k t th hai ca xu abba l b ng trc h ca aha. Trong lp String c nhng hm sau c s dng so snh cc xu.

boolean equals(Object obj) boolean equalsIgnoreCase(String str2) Hm equals() c vit String kim tra xem i tng lp String v i
tng tham s c cng tp cc k hiu hay khng. Tng t hm

equalsIgnoreCase() thc hin so snh, nhng khng phn bit cc trng hp


ch thng, ch hoa.

boolean startWith(String str) boolean endWith(String str)


Hai hm ny cho kt qu true nu xu bt u (kt thc) bng i s str.

int compareTo(String str2) int compareTo(Object obj) Hm compareTo() u thc hin s snh hai xu v tr li kt qu da vo kt
qu i snh: + 0 nu xu hin thi bng xu i s, + Gi tr nh hn 0, nu xu nh hn xu i s theo th t t in, + Gi tr ln hn 0, nu xu ln hn xu i s theo th t t in, - 127 -

Hm compareTo() th hai thc hin tng t nh nh hm u nu i s l chuyn v c i tng xu, ngc li s cho qua x l ngoi l ClassCastException. V d: String strA = new String(Ha Noi, Viet Nam); String strB = new String(Ha noi, Viet nam); boolean b1 = strA equals(strB); // false boolean b2 = strA equalsIgnoreCase(strB); // true String str1 = new String(abba); String str2 = new String(aha); int compVal = str1.compareTo(str2);// Gi tr m v str1<str2

Chuyn i cc trng hp ca k t
chuyn cc k t vit thng v ch vit hoa hoc ngc li, chng ta s dng nhng hm sau: String toUpperCase() String toLowerCase()

Lu : Nu khng c k t no phi chuyn i th hm cho li xu gc, ngc li khi c k t phi chuyn th i tng mi ca String c to ra v cho li kt qu .
V d: String strA = new String(Ha Noi, Viet Nam); String strB = new String(ha noi, viet nam); String str1 = strA.toUpperCase(); String str2 = strB.toLowerCase(); boolean b1 = str1 == strA; // false String str2 = str2 == strB; // true

Ghp cc xu xu
Ghp hai xu cho kt qu l mt xu, trong cc k t ca xu u ng trc cc k t ca xu th hai. Php ghp khng c tnh giao hon. Nh cc phn trc chng ta thy, php + c np chng thc hin php ghp ca cc xu. Ngoi ra chng ta cn c th s dng hm thnh phn ca lp String: String concat(String str) V d: String tin = Hoc lap trinh ; tin = tin + huong doi tuong ; tin = tin.concat(voi Java!); - 128 -

Kt qu cho xu mi: Hoc lap trinh huong doi tuong voi Java!.

Tm cc cc k t v cc xu con
Nhng hm sau c np chng tm ch s ca k t hay ch s bt u, ch s cui ca mt xu con. Nu khng tm c cc hm ny s cho kt qu l -1.

int indexOf(int ch)


Tm ch s ca ln xut hin u tin ca ch trong xu.

int indexOf(int ch, int fromIndex)


Tm ch s ca ln xut hin u tin ca ch trong xu bt u t fromIndex.

int indexOf(String str)


Tm ch s ca ln xut hin u tin ca xu con str trong xu hin thi.

int indexOf(String str, int fromIndex)


Tm ch s ca ln xut hin u tin ca xu con str bt u t fromIndex trong xu hin thi.

int lastindexOf( int ch)


Tm ch s ca ln xut hin cui cng ca k t ch trong xu.

int lastindexOf(int ch, int fromIndex)


Tm ch s ca ln xut hin cui cng ca ch bt u t fromIndex trong xu.

int lastindexOf(String str)


Tm ch s ca ln xut hin cui cng ca xu con str trong xu hin thi.

int lastindexOf(String str, int fromIndex)


Tm ch s ca ln xut hin cui cng ca xu con str bt u t fromIndex trong xu hin thi.

String replace(char cu, char moi)


Thay tt c cc ln xut hin ca k t cu bng k t moi trong xu.

Trch ra cc xu con
String trim()
Hm ny c s dng to ra mt xu mi, trong cc k t trng (nhng k t c gi tr nh hn gi tr du cch ) trong xu u b loi b.

String substring(int startIndex)


Cho kt qu l mt xu con c trit ra t v tr startIndex n cui ca xu.

String substring(int startIndex, int endIndex)


Cho kt qu l mt xu con c trit ra t v tr startIndex n v tr endIndex ca xu. Nu ch s khng tng thch (vt ra ngoi phm vi xc nh) th cho qua ngoi l StringIndexOutOfBoundsException. V d: - 129 -

String cau = \t\n Java Applet \n\t; cau = cau.trim(); // Java Applet cau = cau.substring(5); // Applet cau = cau.substring(2,4); // ple

Chuyn cc i tng ca Object v String


Lp String vit hm toString() ca lp Object t tr li i tng ca lp String. ng thi n cn c cc hm np chng valueOf() chuyn cc gi tr s v dng xu k t.

static String valueOf(Object obj) static String valueOf(char[] characters)


Hai hm ny c np chng chuyn cc i tng obj v mng cc k t characters v xu k t.

static String valueOf(boolean b) static String valueOf(char c)


Hm u c np chng chuyn hai gi tr boolean: true, false v xu k t true, false tng ng.

static String valueOf(int i) static String valueOf(long l) static String valueOf(float f) static String valueOf(double d)
Cc hm ny c np chng chuyn cc gi tr s v dng xu k t.

6.4 Lp StringBuffer
Ngc li vi lp String, lp cc xu ch cho c, lp StringBuffer li ci t cc xu cho c c ln ghi. Cc thnh phn trong xu ca lp StringBuffer khng nhng c php thay i m kch thc ca n cng c th thay i ty . Hai lp String v StringBuffer l tng i gn nhau, song chng li l hai lp c lp.

To lp i tng StringBuffer
Lp final class StringBuffer c ba ton t to lp to lp, khi to v t di (s k t) cho i tng ca lp StringBuffer.

StringBuffer(String str)
To ra i tng mi c ni dung ging nh xu i s str. Lu kch thc ca xu buffer c t bng kch thc ca xu str cng vi ch cho 16 k t nhiu hn.

StringBuffer(int length)
To ra i tng mi cha c ni dung v t kch thc ca xu buffer bng i s length, nu i s ln hn 0.

StringBuffer()
- 130 -

To ra i tng mi cha c ni dung v t kch thc ca xu buffer l 16.


StringBuffer strBuf1 = new StringBuffer(Java);// Kch thc = 20 StringBuffer strBuf2 = new StringBuffer(10); // Kch thc = 10 StringBuffer strBuf3 = new StringBuffer(); // Kch thc = 16

c v thay i cc k t trong StringBuffer


int length()
Cho s k t trong xu buffer.

char charAt(int index) void setCharAt(int index, char ch)


Hm u c mt k t v hm th hai thay i k t v tr index trong xu buffer thnh ch. H thng s cho qua ngoi l StringIndexOutOfBoundsException nu cc ch s khng tng thch.

Chuyn StringBuffer sang String


Lp StringBuffer np chng hm toString() chuyn xu buffer v xu ca lp c ng String.

B sung, chn v xo cc k t trong StringBuffer


Hm append() c np chng b sung cc k t vo cui ca xu.

StringBuffer append(Object obj)


i tng obj c chuyn v xu (bng hm String.valueOf()) v sau b sung vo xu buffer.

StringBuffer append(String str) StringBuffer append(char[] str) StringBuffer append(char[] str, int offset, int len) StringBuffer append(char c) Cc mng k t str v k t c c chuyn v xu v sau b sung vo xu buffer. StringBuffer append(boolean b) StringBuffer append(int i) StringBuffer append(long l) StringBuffer append(float f) StringBuffer append(double d) Cc gi tr nguyn thy c chuyn v xu v sau b sung vo xu buffer. StringBuffer insert(int offset, Object obj) StringBuffer insert(int offset, String str) StringBuffer insert(int offset, char[] str ) StringBuffer insert(int offset, char c)
- 131 -

StringBuffer insert(int offset, boolean b) StringBuffer insert(int offset, int i) StringBuffer insert(int offset, long l) StringBuffer insert(int offset, float f) StringBuffer insert(int offset, double d) Hm insert() c np chng chn i s th hai (sau khi c chuyn v dng xu bng cch s dng hm String.valueOf()) vo t v tr offset trong xu buffer. StringBuffer delete(int index) StringBuffer delete(int start, int end) Hm u xo i k t v tr index, hm sau xo i mt xu con k t v tr start n end. StringBuffer reverse() Ni dung ca xu buffer c o ngc li (soi gng).
V d: // S dng php b sung, chn v xo trong xu,
StringBuffer buf = new StringBuffer(Lan dem); buff = buff.delete(3,6); // Lan buff = buff.append(12); // Lan12 buff = buff.insert(3, co ); // Lan co 12 buff = buff.setCharAt(0,T); // Tan co 12 buff = buff.reverse(); // 21 oc naT

Kim sot c ca StringBuffer


int capacity()
Cho li kch thc (kh nng cha) ca xu buffer.

void ensureCapacity(int minCap)


m bo ch cho t nht minCap k t ca xu buffer.

void setLength(int newLen) t di ca xu buffer l newLen.

6.5 Cu trc tuyn tp i tng


Cu trc tuyn tp (Collection) cho php tp hp cc i tng li x l nh mt n v. Cc i tng bt k c th c lu tr, tm kim v c thao tc nh l cc phn t ca tuyn tp v cc phn t ca n l khng thun nht. Thit k mt h thng thng i hi phi x l mt nhm cc i tng c lin quan vi nhau. Cu trc tuyn tp gii thiu mt tp cc lp tin dng chun phc v cho vic x l trn cc tuyn tp. Nhng cu trc ny c cung cp gi java.util v c chia thnh ba phn. - 132 -

Giao din li (Core interface) cho php cc tuyn tp c x l c lp vi ci t (hnh H6-2). Tp cc ci t ca cc giao din cung cp cu trc d liu cho cc chng trnh c th s dng (hnh H6-3). Tp cc thut ton c s dng thc hin cc php ton trn cc tuyn tp.

Phn giao din li


Giao din (interface) Collection l c s pht trin, m rng thnh cc giao din khc nh Set, List, SortedSet v Map v giao din c s m rng thnh SortedMap. Hnh H6-2 m t cu trc phn cp theo quan h k tha ca cc giao din li.
<<interface>> Collection <<interface>> Map

<<interface>> Set <<interface>> SortedSet

<<interface>> List

<<interface>> SortedMap

Hnh H6-2 Cc giao din li ca Collection Cc giao din li ca cu trc Collection c m t trong bng sau:

interface Collection Set

SortedSet

M t interface c s nh ngha tt c cc php ton c bn cho cc lp cn duy tr thc hin v ci t chng M rng Collection ci t cu trc tp hp, trong khng c phn t c lp v chng khng c sp xp M rng Set ci t cu trc tp hp c sp,

- 133 -

List

Map SortedMap

trong khng c phn t c lp v chng c sp xp theo th t M rng Collection ci t cu trc danh sch, trong cc phn t c sp xp theo th t, v c lp interface c s nh ngha cc php ton cc lp s dng v ci t cc nh x t kho sang cc gi tr M rng ca Map ci t cc nh x kho theo th t

Phn ci t
Gi java.util cung cp tp cc lp ci t cc giao din li to ra nhng cu trc d liu thng s dng nh: Vector, HashTable, HashSet, LinkedList, TreeSet, v.v. Nhng lp ny v giao din li c xy dng theo cu trc phn cp nh trong hnh H6-3.
<< interface>> Map << interface>> HashMap HasTable << interface>> Set << interface>> List << interface>> Sorted Map

Tree Map

Hash Set

<< interface>> Sorted Set

Array List

Vector

LinkedList

Tree Set

Hnh H6-3 Cc giao din li v cc lp ci t chng Trong hnh H6-3, k hiu biu din cho quan h k tha gia v cho c ch ci t cc giao din ca Java trong UML. biu din

Phn thut ton


Lp java.util.Collection (cn phn bit vi giao din Collection) cung cp mt s hm static thc hin nhng thut ton a x cho nhng php ton khc nhau trn tuyn tp, k c sp xp, tm kim v dch chuyn cc phn t. Mt s hm trong s l:

static int binarySearch(List list, Object key)


- 134 -

S dng thut ton tm kim nh phn xc nh ch s ca phn t key trong danh sch list.

static void fill(List list, Object obj)


Thay th tt c cc phn t trong danh sch list bng obj.

static void shuffle(List list)


Hon v cc phn t ca danh sch list mt cch ngu nhin.

static void sort(List list)


Sp xp cc phn t trong danh sch list theo th t tng dn.

6.5.1 Collection
Giao din Collection c xy dng nh l mu hp ng cho tt c cc cu trc tuyn tp c th da vo m thc thi v ci t. Gi java.util cung cp cc lp tuyn tp (hnh H6-3) ci t hu ht cc hm ca Collection.

Cc php ton c s
int size();
Xc nh kch thc ca tuyn tp.

boolean isEmpty(); Tr li true nu tuyn tp rng, ngc li false. boolean contains(Object obj); Tr li true nu tuyn tp cha obj, ngc li false. boolean add(Object obj); // Ty chn boolean remove(Object obj); // Ty chn Tr li true nu tuyn tp thc hin thnh cng vic b sung (loi b) obj, ngc li false.

Mt s php ton khc


Nhng php ton sau thc hin trn tuyn tp nh mt n v cu trc d liu.

boolean cotainAll(Collection c);

// Ty chn Kim tra xem tuyn tp hin thi c cha c tuyn tp c hay khng. boolean addAll(Collection c); // Ty chn
Thc hin php hp hai tuyn tp

boolean removeAll(Collection c);


Thc hin php tr hai tuyn tp

// Ty chn // Ty chn

boolean retainAll(Collection c);


Thc hin php giao hai tuyn tp

void clear()

// Ty chn Hy b i tng trong tuyn tp cc php trn tr li true nu thc hin thnh

cng v cho kt qu thc hin c minh ha nh trong hnh H6-4, trong a, b l hai tuyn tp bt k. - 135 -

a a

a.addAll(b)

a.removeAll(b)

a.retainAll(b)

Hnh H6-4 Cc php ton trn cc tuyn tp

6.5.2 Set (tp hp)


Tp hp Set l cu trc d liu, trong khng c s lp li v khng c s sp xp ca cc phn t. Giao din Set khng nh ngha thm cc hm mi m ch gii hn li cc hm ca Collection khng cho php cc phn t ca n c lp li. Thc cht cc hm ny l cc php ton ca tp hp trong ton hc. Gi s a, b l hai tp hp (hai i tng ca cc lp ci t Set). Kt qu thc hin trn a, b c th m t nh trong bng sau:
Cc hm trong Set a.containsAll(b) a.addAll(b) a.removeAll(b) a.retainAll(b) a.clear() Cc php hp tng ng b a ? (Tp con) a = a b (Hp tp hp) a = a - b (Hiu tp hp) a = a b (Giao tp hp) a = (Tp rng)

Sau y chng ta xt mt s lp thc thi ci t giao din Set.

HashSet
Mt dng ci t nguyn thy ca Set l lp HashSet, trong cc phn t ca n l khng c sp. Lp ny c cc ton t to lp:

HashSet()
To ra mt tp mi khng c phn t no c (tp rng).

HashSet(Collection c)
To ra mt tp mi cha cc phn t ca tuyn tp c nhng khng cho php lp.

HashSet(int initCapacity)
To ra mt tp mi rng c kch thc (kh nng cha) l initCapacity.

HashSet(int initCapacity, float loadFactor)


To ra mt tp mi rng c kch thc (kh nng cha) l initCapacity v yu t c np vo l loadFactor. - 136 -

V d 6.4 M t cch to ra cc tp hp v kim tra mi qua h gia chng. Khi thc hin cc i s c a vo sau tn chng trnh theo dng lnh. Chng trnh bt u vi tap1 l rng v ly cc k t ca i s u tin to ra tap2. So snh hai tp , thng bo kt qu ra mn hnh, sau cng dn tap2 vo tap1 v li tip tc nh th i vi i s tip theo cho n ht.
import java.util.*; public class TapKT { public static void main(String args[]){ int nArgs = args.length; // S i s ca chng trnh Set tap1 = new HashSet(); // To ra tp th nht l rng for (int i = 0; i < nArgs; i++){ String arg = args[i]; // Ly tng i s ca chng trnh Set tap2 = new HashSet();// To ra tp th 2 int size = arg.length(); // S k t trong mi i s for (int j = 0; j < size; j++)// Tp th 2 cha cc k t ca arg tap2.add(new Character(arg.charAt(j))); // To ra tp tapChung chnh bng tap1 Set tapChung = new HashSet(tap1); tapChung.retainAll(tap2);// tapChung = tap1 tap2 boolean b = tapChung.size() == 0; if (b) System.out.println(tap2+" va "+tap1+" la roi nhau"); else { // tap2 c phi l tp con ca tap1? boolean isSubset = tap1.containsAll(tap2); // tap1 c phi l tp con ca tap2? boolean isSuperset = tap2.containsAll(tap1); // tap1 c bng tap2? if (isSuperset && isSubset) System.out.println(tap2 + " bang tap " + tap1); else if (isSubset) System.out.println(tap2+" la tap con cua "+tap1); else if (isSuperset) System.out.println(tap2+" la tap cha cua "+tap1); else System.out.println(tap2 + " va " + tap1 + " co " + tapChung + " la phan chung"); } tap1.addAll(tap2);// hp tap2 vo tap1 } } }

- 137 -

Dch v thc hin chng trnh vi cc i s nh sau: java TapKT em voi em anh s cho kt qu: [m, e] va [ ] la roi nhau [v, i, o] va [m, e] la roi nhau [m, e] la tap con cua [m, v, i, e, o] [a, h, n] va [m, v, i, e, o] la roi nhau

6.5.3 List (danh sch)


Cu trc List l dng tuyn tp cc phn t c sp theo th t (cn c gi l dy tun t) v trong cho php lp (hai phn t ging nhau). Ngoi nhng hm m n c k tha t Collection, List cn b sung thm nhng hm nh:

Object get(int index)


Cho li phn t c xc nh bi index.

// Ty chn Thay th phn t c xc nh bi index bng elem. void add(int index, Object elem) // Ty chn Chn elem vo sau phn t c xc nh bi index. Object remove(int index) // Ty chn B i phn t c xc nh bi index. boolean addAll(int index, Collection c) // Ty chn Chn cc phn t ca tuyn tp c vo v tr c xc nh bi index. int indexOf(Object elem) Cho bit v tr ln xut hin u tin ca elem trong danh sch. int lastIndexOf(Object elem) Cho bit v tr ln xut hin cui cng ca elem trong danh sch. List subList(int fromIndex, int toIndex) Ly ra mt danh sch con t v tr fromIndex n toIndex . ListIterator listIterator()
Cho li cc phn t lin tip bt u t phn t u tin.

Object set(int index, Object elem)

ListIterator listIterator(int index)


Cho li cc phn t lin tip bt u t phn t c xc nh bi index. Trong ListIterator l giao din m rng giao din Iterator c trong java.lang.

Cc lp ArrayList, Vector v LinkedList


Ba lp ny c nhng ton t to lp to ra nhng danh sch mi rng hoc c cc phn t ly theo cc tuyn tp khc. - 138 -

Vector v ArrayList l hai lp kiu mng ng (kch thc thay i c). Hiu sut
s dng hai lp ny l tng ng nhau, tuy nhin nu xt theo nhiu kha cnh khc th ArrayList l cu trc hiu qu nht ci t cu trc danh sch List. V d 6.5 H thng c mt dy N_DIGIT (5) ch s b mt. Hy vit chng trnh nhp vo N_DIGIT ch s on xem c bao nhiu ch s trng v c bao nhiu v tr cc ch s trng vi dy s cho trc.
import java.util.*; public class NhapDoanSo { final static int N_DIGIT = 5; public static void main(String args[]){ if(args.length != N_DIGIT) { System.err.println("Hay doan " + N_DIGIT + " chu so!"); return; } List biMat = new ArrayList();// To danh sch biMat l rng biMat.add("5"); // B sung cc s vo dy biMat biMat.add("3"); biMat.add("2"); biMat.add("7"); biMat.add("2"); List doan = new ArrayList();// To danh sch doan l rng for(int i = 0; i < N_DIGIT; i++) doan.add(args[i]); // a cc s t i s chng trnh vo doan List lap = new ArrayList(biMat);// Lu lu biMat sang lap int nChua = 0; // m s cc ch s trng nhau, ngha l thc hin c php b i remove() for(int i = 0; i < N_DIGIT; i++) if (lap.remove(doan.get(i))) ++nChua; int nViTri = 0; ListIterator kiemTra = biMat.listIterator(); ListIterator thu = doan.listIterator(); // Tm nhng v tr on trng trong hai dy c lp while (kiemTra.hasNext())// Khi cn phn t tip theo // Kim tra xem ln lt cc v tr ca hai dy c trng nhau hay khng if (kiemTra.next().equals(thu.next())) nViTri++; // Thng bo kt qu ra mn hnh System.out.println(nChua + " chu so doan trung."); System.out.println(nViTri + " vi tri doan trung."); } }

Dch v thc hin chng trnh: java NhapDoanSo 3 2 2 2 7 s cho kt qu: 4 chu so doan trung 1 vi tri doan trung - 139 -

6.5.4 Map (nh x)


Map nh ngha cc nh x t cc kho (keys) vo cc gi tr. Lu : cc kha phi l
duy nht (khng cho php lp). Mi ko c nh x sang nhiu nht mt gi tr, c gi l nh x n. Cc nh x khng phi l cc tuyn tp, giao din Map cng khng phi l m rng ca cc Collection. Song, php nh x c th xem nh l mt loi tuyn tp theo ngha: cc kho (key) to thnh tp hp v tuyn tp cc gi tr (value) hoc tp cc cp <key, value>. Giao din Map khai bo nhng hm sau:

Object put(Object key, Object value);


Chn vo mt cp <key, value>

// Ty chn

Object get(Object key);


c gi tr c xc nh bi key nu c nh x, ngc li cho null nu khng c nh x ng vi key.

Object remove(Object key);


Loi b nh x c xc nh bi key.

// Ty chn

boolean containsKey(Object key); Cho gi tr true nu key c nh x sang mt gi tr no , ngc li l false. boolean containsValue(Object value); Cho gi tr true nu value c nh x bi mt key no , ngc li l false. int size();
Cho s cc cp nh x <key, value>.

boolean isEmpty(); Cho gi tr true nu nh x rng, ngc li l false.

Mt s php ton thng thng dng


void putAll(Map t);
Sao li cc nh x t t.

// Ty chn // Ty chn

void clear();
Xo i tt c cc nh x.

Set keySet();
Xc nh tp cc kho.

Collection values();
Xc nh tuyn tp cc gi tr.

Set entrySet();
Xc nh tp cc nh x <key, value>.

- 140 -

Cc lp HashMap v HashTable
Hai lp ny ci t giao din Map v c xy dng trong java.lang. Chng cho php to ra cc nh x mi c th rng hoc c nhng kch thc ty . V d 6.6 Vit chng trnh nhp vo cc trng lng v in ra tn sut ca cc trng lng trong cc nhm cch nhau 5 n v (kg).
import java.util.*; public class NhomTrongluong { public static void main(String args[]){ // To ra mt nh x lu tn sut ca mi nhm Map demNhom = new HashMap(); int nArgs = args.length; // c cc trng lng c nhp vo t i s v chia nhm cch nhau 5 n v. for(int i = 0; i < nArgs; i++){ double trongL = Double.parseDouble(args[i]); Integer nhomTL=new Integer((int)Math.round(trongL/5)*5); Integer demCu = (Integer)demNhom.get(nhomTL); // Tng s ln trng lung trong cng nhm, nu l ln u (demCu = null) th t l 1. Integer demMoi = (demCu == null)? new Integer(1): new Integer(demCu.intValue()+1); demNhom.put(nhomTL, demMoi); } // Ly ra tp cc gi tr t nh x demNhom List keys = new ArrayList(demNhom.keySet()); // Sp xp li theo cc nhm trng lng Collections.sort(keys); ListIterator keyIterator = keys.listIterator(); // Tm tn sut ca cc trng lng c nhp vo trong cc nhm while(keyIterator.hasNext()) { Integer nhom = (Integer) keyIterator.next(); Integer dem = (Integer) demNhom.get(nhom); int demInt = dem.intValue(); // S dng hm fill() ca lp Array to ra xu gm demInt cc du * char[] bar = new char[demInt]; Arrays.fill(bar, '*'); System.out.println(nhom+"\t" + new String(bar)); } } }

Dch v chy chng trnh NhomTrongLuong vi cc tham s: java NhomTrongLuong 75 72 93 12 34 s cho kt qu: 10 35 75 95 * * ** * - 141 -

Nh vy, nhm 10 kg c 1, 35 kg c 1, 75 kg c 2 v 95 kg c 1.

6.5.5 SortedSet (tp c sp) v SortedMap (nh x c sp)


Cc cu trc tp hp (set) v nh x (map) c giao din c bit l SortedSet v SortedMap nh trong hnh H6-5 ci t nhng cu trc c cc phn t c sp theo th t ch nh.

Giao din SortedSet


SortedSet l giao din m rng ca Set cung cp cc hm x l cc tp c sp. SortedSet headSet(Object toElem); Cho li tp c sp gm nhng phn t ng trc toElem. SortedSet tailSet(Object fromElem); Cho li tp c sp gm nhng phn t cui ng sau fromElem. SortedSet subSet(Object fromElem, Object toElem); Cho li tp c sp gm nhng phn t k t fromElem n toElem. Object first(); Cho li phn t u tin (cc tiu) ca tp c sp. Object last(); Cho li phn t cui cng (cc i) ca tp c sp. Comparator comparator() Cho li th t so snh ca cu trc c sp, cho null nu cc phn t c sp
theo th t t nhin (tng dn)

Giao din SortedMap


SortedMap l giao din m rng ca Map cung cp cc hm x l cc nh x c sp theo th t ca kho (key). SortedMap headMap(Object toKey); Cho li nh x c sp gm nhng phn t ng trc toKey. SortedMap tailMap(Object fromKey); Cho li nh x c sp gm nhng phn t cui ng sau fromKey. SortedMap subMap(Object fromKey, Object toKey); Cho li nh x c sp gm nhng phn t k t fromKey n toKey. Object firstKey(); Cho li phn t u tin (cc tiu) ca nh x c sp. Object lastKey(); Cho li phn t cui cng (cc i) ca nh x c sp.

- 142 -

TreeSet v TreeMap
Hai lp ny ci t hai giao din SortedSet v SortedMap tng ng. Chng c bn loi ton t to lp nh sau:

TreeSet() TreeMap()
To ra nhng tp hoc nh x mi v rng, c sp theo th t tng dn ca cc phn t hoc ca kho.

TreeSet(Comparator c) TreeMap(Comparator c)
To ra nhng tp hoc nh x mi c sp v xc nh th t so snh theo c.

TreeSet(Collection c) TreeMap(Map m)
To ra nhng tp hoc nh x mi c sp v c cc phn t ly t c hoc t m tng ng.

TreeSet(SortedSet s) TreeMap(SortedMap m)
To ra nhng tp hoc nh x mi c sp v c cc phn t ly t s hoc t m tng ng.

Bi tp
6.1 Xy dng lp cc ma trn cp n m c cc hm: + Nhp, hin th cc ma trn, + Thc hin cc php cng, tr, nhn hai ma trn, + Tnh nh thc ca ma trn nu l ma trn vung. 6.2 Xy dng lp cc phn s (s hu t) c cc hm: + Cc ton t to lp phn s c ngha (mu s khc 0, khng c du m mu s, ti gin, v.v + Thc hin cc php +, -, *, / trn cc phn s. 6.3 Nhng lnh no trong s cc lnh sau l khng hp l? a/ int[] i[] = {{1, 2},{1},{},{1, 2, 3}}; b/ int i[] = new int[2] {1, 2}; c/ int i[][] = new int[][] {{1, 2, 3}, {4, 5, 6}}; d/ int i[][] = {{1, 2},new int[2]}; e/ int i[] = {1, 2, 3, 4}; 6.4 Vit chng trnh tnh s pi, bit rng pi = 4 * (1 - 1/3 + 1/5 - 1/7 + ... ) 6.4 Xy dng lp KhachHang c cc thuc tnh m t: h v tn, a ch lin h, cc s in thoi, a ch E-mail v cc hm thnh phn : + Nhp, hin th cc thng tin v khch hng, + Tm kim theo h hoc theo tn gi ca khch hng, - 143 -

+ Tm theo a ch v khng phn bit ch vit thng hay ch vit hoa. 6.5 Cho bit kt qu thc hin ca chng trnh sau:
import java.util.*;

public class Sets { public static void main(String[] args){ List list = new ArrayList(); list.add(1); list.add(2); list.add(1,3); List list2 = new ArrayList(list); list.addAll(list2); list2 = list.subList(2,5); System.out.printl(list2); list2.clear(); System.out.printl(list); } } 6.6 Xy dng lp VanBan x l cc vn bn v lp ny c cc hm: + Nhn mt xu k t v cho li xu khng c k t no b lp li, + Nhn mt xu bt k v cho li kt qu l s cc k t ch xut hin mt ln, + Nhn ba xu, thc hin tm v thay th tt c cc ln xut hin ca xu th hai trong xu th nht bng xu th ba.

- 144 -

Вам также может понравиться