Please enable JavaScript.
Coggle requires JavaScript to display documents.
CHƯƠNG 9: LẬP TRÌNH TỔNG QUÁT - Coggle Diagram
CHƯƠNG 9: LẬP TRÌNH TỔNG QUÁT
Là tổng quát hóa chương trình để có thể hoạt động
với các kiểu dữ liệu khác nhau, kể cả kiểu dữ liệu
trong tương lai
ĐỊNH NGHĨA VÀ SD TEMPPLATE
Lớp tổng quát
là lớp có thể nhận kiểu dữ liệu là 1 lớp bất kì
cú pháp: Tên lớp<kiểu 1, kiểu 2,...>
E Các thành phần trong một collection
K Kiểu khóa trong Map
V Kiểu giá trị trong Map
T Các kiểu thông thường
S, U Các kiểu thông thường khác
phương thức tổng quát
là các phương thức tự định nghĩa
kiểu tham số của nó
Cú pháp: (chỉ định truy cập) <kiểu 1,kiểu 2,..>(kiểu trả về)
tên phương thức( danh sách tham số)
public static<E> void print(E[] a) {
không dùng được với kiểu nguyên thủy
GIỚI HẠN KIỂU DỮ
LIỆU TỔNG QUÁT
giới hạn các kiểu dữ liệu tổng quát
sử dụng phải là dẫn xuất của một hay
nhiều lớp
<type_param extends bound>
<type_param extends bound1 & bound 2>
public class Information<T extends 2DShape>
chấp nhận các kiểu là lớp con của 2DShape
LẬP TRÌNH TỔNG QUÁT TRONG
JAVA COLLECTIONS FRAMEWORK
Collection là đối tượng có khả năng
chứa các đối tượng khác
Java collections framework
INTERFACES: là các giao tiếp thể hiện
tính chất của các kiểu collection khác nhau như list set map
List: tập các đối tượng tuần tự,kế nhau,có thể lặp lại
trong collection
chứa araylist,vector,linkedlist
List cung cấp thêm phương thức để xử lý Collections kiểu danh sách
Object get(int index); lấy tại vtr i
Object set(int index, Object o); thay thế i = o
void add(int index, Object o);
Object remove(int index);
int indexOf(Object o); tìm vị trí đầu của o
int lastIndexOf(Object o);
set: tập các đối tượng không lặp lại
hashset,sorted set-> treeset
set không có thêm pthuc
chỉ kế thừa từ collection
sorted set: cho phép null
các đối tượng đưa vào sorted set phải cài đặt
comparable hoặc lớp cài đặt sortedset phải nhận
một comparator trên kiểu của đtg
map: tập các cặp khóa-giá trị và không cho phép
khóa lặp lại
hashmap,hashtable
chứa sorted map,tree map
xác định giao diện cơ bản để thao tác với
tập cặp khóa-giá trị: thêm xóa ,kiểm tra
cung cấp 3 cách nhìn cho nội dung tập:
tập các khóa, tập các giá trị, tập ánh xạ khóa-gtr
sorted map: khác set ở việc sắp xếp thực hiện với
các khóa
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ý
trên collection: sắp xếp ,min ,max
CÁC LỚP THỰC THI
ARRAY LIST:mảng động tự động tăng kích cỡ
HashSet: bảng căm
lưu các phần tử
không cho phép lưu trùng
cho phép null
LinkedHashSet:băm+ linkedlist
thừa kế hashset và thực thi giao diện set
khác hashset có móc nối đôi
ptu được sắp xếp theo thứ tự được insert vào tập hợp
TreeSet: cho phép lấy ptu theo thứ tự đã sắp xếp
ptu thêm vào tự động sắp xếp
thêm vào hashset sau đó convert về treeset
ITERATOR
Cung cấp cơ chế thuận tiện để duyệt
lặp toàn bộ nội dung của tập hợp
iterator của các tập hợp đã sắp xếp duyệt
theo thứ tự tập hợp
listIterator thêm các phương thức đưa ra bản chất
tuần tự của ds
iterator( ): yêu cầu container trả về một iterator
next( ): trả về phần tử tiếp theo
hasNext( ): kiểm tra có tồn tại phần tử tiếp theo hay không
remove( ): xóa phần tử gần nhất của iterator
COMPARATOR
WILD CARD
Quan hệ thừa kế giữa hai lớp
không có ảnh hưởn gì đến quan hệ
giữa các cấu trúc tổng quát của chúng
VIDU: không thể ép kiểu ArrayList<child> và Araylist<parent>
giải pháp: sử dụng kí tự đại diện(wild card) dấu ?
public class test{
void printList(List<?> lst){
Iterator it = lst. iterator();