Lưu trữ và xử lý đối tượng - Pdf 63

Đ tài 5. L u tr và x lý đ i t ngề ư ữ ử ố ượ
Trong ph n này chúng ta s đ c p t i các l p ti n ích c a Java trong gói java.util dùngầ ẽ ề ậ ớ ớ ệ ủ
cho vi c l u tr và x lý các đ i t ng.ệ ư ữ ử ố ượ
I. L p Vector và giao di n Enumerationớ ệ
I.1 L p Vectorớ
L p trình viên dùng l p Vector đ l u tr các đ i t ng có ki u gi ng nhau nh ng cóậ ớ ể ư ữ ố ượ ể ố ư
th thay đ i đ ng v kích th c tùy theo nhu c u. Chúng ta s xem xét vi c s d ng interfaceể ổ ộ ề ướ ầ ẽ ệ ử ụ
Enumeration đ cho phép duy t l p trên các c u trúc nh Vector.ể ệ ặ ấ ư
Kích th c c a Vector đ c tăng theo m t l ng đ t tr c ho c đ c t đ ng tăngướ ủ ượ ộ ượ ặ ướ ặ ượ ự ộ
g p đôi khi ta c n tăng dung l ng c a nó. Vì v y thao tác chèn m t ph n t m i vào m tấ ầ ượ ủ ậ ộ ầ ử ớ ộ
Vector s nhanh h n khi kích th c c a nó còn đ dùng.ẽ ơ ướ ủ ủ
Vector l u tr tham chi u c a các đ i t ng nên ch ng trình có th dùng Vector đư ữ ế ủ ố ượ ươ ể ể
l u tham chi u đ n b t kỳ đ i t ng nào. Đ l u các giá tr d li u nguyên th y, ta ph i sư ế ế ấ ố ượ ể ư ị ữ ệ ủ ả ử
d ng các l p trong java.lang nh Integer, Long hay Float thay vì dùng chính ki u đó.ụ ớ ư ể
Sau đây là m t ví d nh p vào 10 s nguyên, l u vào m t Vector r i in ra đ ki m tra:ộ ụ ậ ố ư ộ ồ ể ể

// Nhâp 10 doi tuong so nguyen
1. java.util.Vector v = new java.util.Vector(5,2);
2. for (int i=0;i<10;i++)
3. {
4. System.out.print("Nhap so nguyen thu " + String.valueOf(i) + ":");
5. java.lang.Integer p = new java.lang.Integer(nhap.nextInt());
6. v.addElement(p);
7. }
8. // In ra de kiem tra
9. for (int i=0;i<10;i++)
10. {
11. System.out.print("So nguyen thu " + String.valueOf(i) + " la:");
12. System.out.println(v.get(i));
13. }
14. System.out.println(v.size());

t ng key và các ph n t c a Vector đ ck so sánh v i nhau b i ph ng th c equals(). Cácượ ầ ử ủ ươ ớ ở ươ ứ
l p th ng khai báo ch ng ph ng th c equals() đ dùng trong vi c so sánh các đ i t ngớ ườ ồ ươ ứ ể ệ ố ượ
c a mình.ủ
indexOf(Object): Tr v ch s c a đ i t ng đ u tiên so kh p v i Object.ả ề ỉ ố ủ ố ượ ầ ớ ớ
trimToSize(): Gi m s l ng ph n t c a Vector.ả ố ượ ầ ử ủ
I.2 Giao di n Enumerationệ
S d ng ph ng th c elements() c a m t đ i t ng Vector s tr v m t đ i t ngử ụ ươ ứ ủ ộ ố ượ ẽ ả ề ộ ố ượ
Enumeration cho phép ch ng trình duy t l p trên danh sách ph n t c a Vector.ươ ệ ặ ầ ử ủ
Đ i t ng Enumeration có các ph ng th c quan tr ng sau:ố ượ ươ ứ ọ
hasMoreElement(): Tr v true n u v n còn ph n t trong Vector.ả ề ế ẫ ầ ử
nextElement(): Tr v tham chi u t i ph n t ti p theo trong Vector.ả ề ế ớ ầ ử ế
Đo n ch ng trình sau duy t và in ra danh sách các sinh viên:ạ ươ ệ
abstract class People
{
protected int NamSinh;//Nam Sinh
protected String HoVaTen; //Ho Va Ten
//constructor
public People(int ns,String ht)
{
NamSinh=ns;
HoVaTen=ht;
}
// Phuong thuc tinh tuoi
protected abstract int TinhTuoi();
public abstract String toString();
}
// Ke thua lop People
public class SinhVien extends People
70
{

// Ham main
public static void main(String[] argv)
{
// Dat gia tr? bien static, sinh vien dau tien co ma so 1
SinhVien.MaSo=1;
// bien doi tuong Vector
java.util.Vector sv = new java.util.Vector(5);
SinhVien k1 = new SinhVien(80,"Nguyen Thi Mai 1","Letio3",5);
sv.addElement(k1); // Them sinh vien vao Vector
SinhVien k2 = new SinhVien(81,"Tran Thi Mai 2","Letio3",6);
sv.addElement(k2);
SinhVien k3 = new SinhVien(82,"Pham Thi Mai 3","Letio3",7);
sv.addElement(k3);
SinhVien k4= new SinhVien(83,"Phan Thi Mai 4","Letio3",8);
sv.addElement(k4);
SinhVien k5= new SinhVien(84,"Hoang Thi Mai 5","Letio3",9);
71
sv.addElement(k5);
// Dung interface Enumeration de duyet cac phan tu cua Vector
java.util.Enumeration enu = sv.elements();
while (enu.hasMoreElements())
{
// Ep kieu, kieu Object la kieu cha cua moi kieu nen luon ep duoc
SinhVien g = (SinhVien)enu.nextElement();
System.out.println(g.toString());
}
//People p = new People(20,"Pham Anh Hoa"); bao loi vi People là l p tr uớ ừ
t ngượ

}

Trong ví d này, các câu tr l i n m trong kho ng t 1 đ n 10 nên khai báo m t m ngụ ả ờ ằ ả ừ ế ộ ả
11 ph n t đ có th s d ng chính giá tr 10 làm ch s c a m ng. Ch c n duy t m ngầ ử ể ể ử ụ ị ỉ ố ủ ả ỉ ầ ệ ả
TraLoi 1 l n ta đã có ngay k t qu .ầ ế ả
II.2. Các thu t toán c b n trên m ngậ ơ ả ả
Ví d : S p x p tuy n tínhụ ắ ế ế
Đây là m t ví d s p x p các ph n t c a m ng tăng d n theo thu t toán “n i b t” -ộ ụ ắ ế ầ ử ủ ả ầ ậ ổ ọ
t c là sau m i vòng l p duy t, ph n t nào l n nh t s b đ y xu ng cu i cùng. ứ ỗ ặ ệ ầ ử ớ ấ ẽ ị ẩ ố ố
// S p x p các ph n t c a m ngắ ế ầ ử ủ ả
public void bubbleSort( int array2[] )
{
// Duy t qua m i ph n t c a m ngệ ỗ ầ ử ủ ả
for ( int pass = 1; pass < array2.length; pass++ ) {
// Vòng l p so sánh và đ i chặ ổ ỗ
for ( int element = 0; element < array2.length - pass; element++ ) {
// So sánh 2 ph n t li n k và đ i ch n u c nầ ử ề ề ổ ỗ ế ầ
if ( array2[ element ] > array2[ element + 1 ] )
swap( array2, element, element + 1 );
} }
}
// Hàm đ i ch 2 ph n t c a m t m ngổ ỗ ầ ử ủ ộ ả
public void swap( int array3[], int first, int second )
{
int hold; // Bi n trung gian đ hoán đ iế ể ổ
hold = array3[ first ];
array3[ first ] = array3[ second ];
array3[ second ] = hold;
73


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status