seminar01 generic collections

Post on 11-Dec-2015

233 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

thuc hanh lan 1

TRANSCRIPT

Lập trình ứng dụng Java 14HCB

Seminar 01: Generic – Collection

Nội dung

£ Thông tin môn học£ Java Collections£ Java Generics£ Bài tập

HTThanh @ FIT-­HCMUS 2

THÔNG TIN MÔN HỌCHồ Tuấn Thanh

HTThanh @ FIT-­HCMUS 3

Thông tin

£ GVLT: p Thầy Nguyễn Văn Khiết

¡ nvkhiet@fit.hcmus.edu.vn

£ GV HDTH:p Thầy Trương Phước Lộc

¡ tploc@fit.hcmus.edu.vnp Thầy Hồ Tuấn Thanh

¡ htthanh@fit.hcmus.edu.vn

HTThanh @ FIT-­HCMUS 4

Lưu ý

£ Không xin SDT của GV£ Gặp GV:

p Gửi email xin gặpp Đề nghị ra vài option để GV quyết địnhp Nhận confirm từ GVp I82, gõ cửa bước vào

£ Gửi email:p Tiêu đề: rõ ràngp Nội dung: MSSV, Họ tên, Lớp, nêu rõ lý do gửip CC cho các GV trong môn học

£ Trao đổi học tập:p Moodle

HTThanh @ FIT-­HCMUS 5

JAVA COLLECTIONSHồ Tuấn Thanh

HTThanh @ FIT-­HCMUS 6

Mảng – Ví dụ

HTThanh @ FIT-­HCMUS 7

Mảng – Nhận xét

£ Phải cho biết trước số lượng phần tử trong mảng

£ Ko thể thay đổi kích thước về sau (mở rộng)p Khai báo mảng mới cars3p Copy dữ liệu qua mảng mới cars3p Cấp vùng nhớ mới cho cars2p Copy dữ liệu từ cars3 qua cars2

£ Thêm phần tử x vào vị trí k£ Xóa phần tử x

HTThanh @ FIT-­HCMUS 8

Java Collections

£ Collection:p Một đối tượng có khả năng chứa các đối tượng khácp Một danh sách, một mảng

£ Các thao tác thông dụng:p Khởi tạo collectionp Thêm một đối tượng vào collectionp Xóa một phần tử ra khỏi collectionp Kiểm trong một đối tượng có trong collection kop Lấy một phần tử trong collectionp Duyệt qua các phần tử trong collection

£ Thay đổi kích thước dễ dàng

HTThanh @ FIT-­HCMUS 9

Sơ đồ lớp

HTThanh @ FIT-­HCMUS 10

Collection Framework

£ Interfaces: các giao tiếp thể hiện tính chất của các loại collection khác nhau

£ Implementations (Classes): các lớp cài đặt các collection interfacep Có thể tạo class mới, cài đặt lại interface đó

£ Algorithms: các phương thức tĩnh, xử lý trên collectionp Sắp xếpp Tìm kiếm

HTThanh @ FIT-­HCMUS 11

Interface Collection

£ Mức cao nhất trong Collection Framework£ Các method thông dụng:

p boolean add(Object obj);;p boolean contains(Object obj);;p boolean isEmpty( );;p Iterator iterator( );;p boolean remove(Object obj);;p int size( );;p Object[ ] toArray( );;

£ 1 class khi không muốn cài đặt method nào è UnsupportedOperationException

HTThanh @ FIT-­HCMUS 12

Interface List

£ Kế thừa interface Collection£ Chứa danh sách các phần tử, truy cập thông qua chỉ số

£ Có thể chứa các phần tử trùng nhau£ Một số method riêng:

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

£ Ép kiểu ko đúng è CastClassException

HTThanh @ FIT-­HCMUS 13

Interface Set

£ Kế thừa interface Collection£ Chứa tập hợp các phần tử (ko trùng nhau)

£ Một số method riêng:p set1.addAll(set2);; // phép hộip set1.retainAll(set2);; // phép giaop set1.removeAll(set2);; // phép trừ

HTThanh @ FIT-­HCMUS 14

Interface SortedSet

£ Kế thừa interface Set£ Quản lý tập hợp được xếp tăng dần£ Lớp đối tượng phải cài đặt interface Comparable hoặc phải truyền vào lớp cài đặt SortedSet một Comparator

£ Một số phương thức riêng:p Object first( );;p Object last( );;p SortedSet headSet(Object end);; // <= endp SortedSet tailSet(Object start);; // >=startp SortedSet subSet(Object start, Object end);;

HTThanh @ FIT-­HCMUS 15

Interface Queue

£ Kế thừa interface Collection£ Hoạt động theo cơ chế FIFO£ Một số method riêng:

p boolean offer(Object obj);; // Thêm vào queuep Object poll();; // Xóa khỏi queue, trả về phần tử đầu

p Object peek();; // Lấy phần tử đầu, ko xóa

HTThanh @ FIT-­HCMUS 16

Interface Map

£ Mức cao nhất trong Collection Framework£ Ko kế thừa interface Collection£ Quản lý các phần tử theo cơ chế key-­valuep Các Key không trùng nhau

HTThanh @ FIT-­HCMUS 17

Interface Map

£ Một số method thông dụng:p Object put(Object key, Object value);;p Object get(Object key);;p Object remove(Object key);;p boolean containsKey(Object key);;p boolean containsValue(Object value);;p Set keySet();; // Trả về các keyp Collection values();; // Trả về các valuep Set entrySet();; // Trả về các cặp key-­value

HTThanh @ FIT-­HCMUS 18

Interface SortedMap

£ Kế thừa interface Map£ Chứa các phần tử được sắp xếp£ Một số method riêng:

p Object firstKey( );;p Object lastKey( );;p SortedMap headMap(Object end);;p SortedMap tailMap(Object start);;p SortedMap subMap(Object start, Object end);;

HTThanh @ FIT-­HCMUS 19

Interface Iterator

£ Duyệt qua Collection£ Một số phương thức thông dụng:

p boolean hasNext( );;p Object next( );;

HTThanh @ FIT-­HCMUS 20

Class ArrayList

£ Cài đặt interface List£ Khởi tạo:

p ArrayList( );;p ArrayList(int capacity);;

HTThanh @ FIT-­HCMUS 21

Class ArrayList

HTThanh @ FIT-­HCMUS 22

Class LinkedList

£ Cài đặt 2 interface List và Queue£ Cài đặt dạng danh sách liên kết

HTThanh @ FIT-­HCMUS 23

Class LinkedList

HTThanh @ FIT-­HCMUS 24

Queue – Ví dụ

HTThanh @ FIT-­HCMUS 25

Class Vector

£ Cài đặt interface List£ Tương tự ArrayList£ Khởi tạo:

p Vector( );;p Vector(int size);;p Vector(int size, int incr);;

HTThanh @ FIT-­HCMUS 26

Class Vector

HTThanh @ FIT-­HCMUS 27

Class Stack

£ Kế thừa class Vector£ Hoạt động theo cơ chế LIFO£ Một số method thông dụng:

p boolean empty() ;;p Object peek( );;p Object pop( );;p Object push(Object element);;

HTThanh @ FIT-­HCMUS 28

Class Stack

HTThanh @ FIT-­HCMUS 29

Class HashSet

£ Cài đặt interface Set

HTThanh @ FIT-­HCMUS 30

Class TreeSet

£ Cài đặt SortedSet

HTThanh @ FIT-­HCMUS 31

Class TreeSet

HTThanh @ FIT-­HCMUS 32

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 + ")";;

Class TreeSet

HTThanh @ FIT-­HCMUS 33

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);;

Class TreeSet

HTThanh @ FIT-­HCMUS 34

// This programs sorts a set of students by name and then by scoreimport 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

Class TreeSet

HTThanh @ FIT-­HCMUS 35

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;;

elsereturn 1;;

);; // end of inner class

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

Class HashMap

£ Cài đặt interface Map

HTThanh @ FIT-­HCMUS 36

Class TreeMap

£ Cài đặt SortedMap

HTThanh @ FIT-­HCMUS 37

Algorithm

HTThanh @ FIT-­HCMUS 38

Algorithm

HTThanh @ FIT-­HCMUS 39

JAVA GENERICSHồ Tuấn Thanh

HTThanh @ FIT-­HCMUS 40

Đặt vấn đề

HTThanh @ FIT-­HCMUS 41

Khắc phục

HTThanh @ FIT-­HCMUS 42

Lời khuyên

HTThanh @ FIT-­HCMUS 43

Generic Class

HTThanh @ FIT-­HCMUS 44

Generic Function

HTThanh @ FIT-­HCMUS 45

Output

Wildcards

HTThanh @ FIT-­HCMUS 46

“?”

“? extends type”

“? super type”

Tài liệu tham khảo

£ Slide “Java Collections” – Professor Evan Korth

£ Slide “Java Generics & Collections” – thầy Nguyễn Lê Hoàng Dũng

£ http://www.tutorialspoint.com/java/java_collections.htm

£ http://www.tutorialspoint.com/java/java_generics.htm

HTThanh @ FIT-­HCMUS 47

BÀI TẬPHồ Tuấn Thanh

48HTThanh @ FIT-­‐HCMUS

Bài tập

£ Bài tập cá nhân£ Viết chương trình ứng dụng WinForm1. Hiển thị danh sách sinh viên2. Tìm sinh viên theo ít nhất 2 tiêu chí (ngườidùng có thể nhập vào 1 hoặc 2 tiêu chí)

3. Thêm mới sinh viên4. Cập nhật thông tin sinh viên5. Xóa thông tin sinh viên

49HTThanh @ FIT-­HCMUS

Bài tập

£ Yêu cầu kĩ thuậtp Javap Lưu trữ plain text filep Swingp Generic, collections

£ Bài nộp: MSSV.rar/zipp Checklist.txt: tự chấm điểm cho 5 chức năng ở trên, mỗi chức năng thang 10

p Thư mục Source code: chứa toàn bộ mã nguồnp Thư mục Data: chứa file dữ liệu, sinhvien.txtp Thư mục Demo: hình ảnh demo các chức năng, mỗichức năng có thể chụp >=1 hình, đặt STT (1-­5) đúng

p Thư mục EXE: chứa file jar chạy được

50HTThanh @ FIT-­HCMUS

HTThanh @ FIT-­HCMUS 51

top related