Professional Documents
Culture Documents
4
Giới thiệu Collections
• Cách tổ chức các phần tử trong một
collection phụ thuộc vào hai yếu tố:
– Thứ tự mà các phần tử được thêm vào
collection.
– Một số mối quan hệ vốn có giữa chính các
phần tử (ví dụ cây tìm kiếm nhị phân).
5
Giới thiệu Collections
• Java Collections Framework:
– Là một tập hợp các giao diện và các lớp
triển khai nhằm lưu trữ và khai thác hiệu
quả các dữ liệu biểu diễn bằng tập hợp hay
đồ thị.
– Ngoài ra Java Collections Framework còn
cho phép người dùng mở rộng các kiểu dữ
liệu Collection bằng cách kế thừa từ các
class hay interface để tạo ra bộ thư viện
riêng phù hợp với nhu cầu.
6
Giới thiệu Collections
• Tất cả các collection framework trong Java đều
chứa:
– Interfaces.
– Implementations(ví dụ như các class).
– Algorithms.
• Mặc dù là một framework nhưng nó hoạt động
như một thư viện lập trình gồm các công việc:
– Định nghĩa ra giao diện lập trình ứng dụng cho các
Collection.
– Hiện thực hóa chúng. (Implement)
– Áp dụng các thuật toán cho các phương thức.
7
Giới thiệu Collections
8
Giới thiệu Collections
shareprogramming.net 9
Giới thiệu Collections
• Lợi ích mà Java Collections Framework
đem lại:
– Giảm công sức lập trình
– Tăng tốc độ và chất lượng chương trình
– Cho phép tương tác giữa các API không liên
quan
– Giảm công sức tìm hiểu và sử dụng các API
mới.
– Giảm công sức thiết kế các API mới
– Thúc đẩy tái sử dụng phần mềm
10
Collection với Stream API
• Hỗ trợ mạnh các thao tác thông thường
như:
– Duyệt collection, lọc dữ liệu, sắp xếp, ánh xạ
dữ liệu…
• Một Stream API hoạt động trên collection
sẽ trải qua 3 đoạn chính:
– Khởi tạo stream
– Hoạt động trung gian (Intermediate Operations)
– Hoạt động cuối (Terminal Operatons)
11
Collection với Stream API
• Ví dụ:
12
Collection với Stream API
• Bài tập:
Cho các phần tử {8,7,9,11,8,11,20,15,7}
- Hãy khởi tạo mảng danh sách.
- Thêm các phần tử trên vào mảng danh
sách.
- Đếm xem trong danh sách có bao nhiêu
phần tử lớn hơn 11.
13
Tham khảo
• Collection trong Java
https://hocjava.com/collections-trong-java-
moi-thu-ban-phai-biet/
• Biểu thức Lambda
https://viblo.asia/p/nam-ro-java-lambda-
expression-cho-nguoi-moi-bat-dau-
RQqKLNwbl7z
14
Lập trình Generics
• Generics là cách thức lập trình tổng quát
cho phép một object hoạt động với nhiều
kiểu dữ liệu khác nhau.
• Thuật ngữ generics nghĩa là tham số hóa
kiểu dữ liệu. Điều này rất quan trọng vì nó
cho phép chúng ta tạo và sử dụng một
class, interface, method với nhiều kiểu dữ
liệu khác nhau.
• Khái niệm Generics được đưa vào Java từ
phiên bản 5
15
Lập trình Generics
• Tại sao nên dùng generics?
– Ví dụ 1: Có nên viết nhiều hàm áp dụng cho
nhiều kiểu dữ liệu khác nhau?
• public String toString(int a) {return ""+a;}
• public String toString(long a) {return ""+a;}
• public String toString(double a) {return ""+a;}
• …
– Cách giải quyết?
• public <T> String toString(T a){return ""+a;}
16
Lập trình Generics
• Ví dụ 1:
17
Lập trình Generics
– Ví dụ 2: Collection Generics
18
Lập trình Generics
• Một số quy ước (nên theo) về cách đặt tên
cho kiểu tham số trong Generics:
19
Xử lý ngoại lệ
• Ví dụ:
20
Nội dung
1. Các khái niệm cơ bản
– Giới thiệu Collection
– Lập trình Generics
– Xử lý ngoại lệ
2. Ngăn xếp – STACK
– Giới thiệu ngăn xếp
– Kiểu dữ liệu trừu tượng ngăn xếp
– Cài đặt ngăn xếp bằng mảng ArrayStack
– Giới thiệu lớp Stack<E> trong Java
– Ứng dụng stack trong đánh giá biểu thức hậu tố
21
Giới thiệu STACK
• Ngăn xếp là một cấu trúc dữ liệu trừu
tượng hoạt động theo nguyên lý LIFO
(Last-In-First-Out).
28
Kiểu dữ liệu trừu tượng ngăn xếp
• Cài đặt interface:
29
Cài đặt ngăn xếp bằng mảng
• Cài đặt class ArrayStack thực thi interface
StackADT:
public class ArrayStack<T> implements
StackADT<T>
{ …//Các thuộc tính&phương thức định nghĩa
//ở đây
}
• Các thuộc tính:
30
Cài đặt ngăn xếp bằng mảng
• Các hàm tạo
31
Cài đặt ngăn xếp bằng mảng
• Hàm mở rộng sức chứa cho mảng
33
Cài đặt ngăn xếp bằng mảng
• Thao tác peek:
34
Giới thiệu class Stack<E> trong java
• Nằm trong gói java.util.Stack<E>
• Lớp Stack<E> cài đặt thực thi các interface:
– Serializable
– Cloneable
– Iterable<E>
– Collection<E>
– List<E>
– RandomAccess
35
Giới thiệu class Stack<E> trong java
• Các phương thức cơ bản
36
Ứng dụng stack trong biểu thức hậu tố
• Biểu thức hậu tố là gì?
– Các biểu thức đại số được sử dụng hàng
ngày đều được biểu diễn dưới dạng trung tố
(infix).
– Biểu thức hậu tố đặt toán tử ra sau các toán
hạng.
– Cách biểu diễn này gọi là ký pháp nghịch đảo
Ba Lan Reverse Polish Notation (RPN)
37
Biểu thức hậu tố
• Một số ví dụ:
38
Chuyển biểu thức trung tố sang hậu tố
• Giải thuật sử dụng stack
39
Ứng dụng stack định trị biểu thức hậu tố
• Cài đặt giải thuật
40
Ứng dụng stack định trị biểu thức hậu tố
• Cài đặt giải thuật
41
Thảo luận
42