Cấu trúc dữ liệu trong Collections Framework

Kiểu dữ liệu và Exceptions trong Java

Jim White

Java Instructor

Framework là gì

  • Framework là tập hợp kiểu có thể tái sử dụng cung cấp chức năng chung
    • Ví dụ kiểu: class và interface
    • Nâng cao chất lượng ứng dụng
    • Tránh phải tạo mọi thứ từ đầu
  • Trong Java, framework được cung cấp qua package
  • Kèm hướng dẫn và quy tắc sử dụng

Framework cung cấp bộ mã có sẵn cho chức năng chung

1 Ảnh của Ashkan Forouzani trên Unsplash
Kiểu dữ liệu và Exceptions trong Java

Các kiểu trong Java

Hai nhóm kiểu trong Java:

  • Kiểu nguyên thủy
    • byte, short, int, long, float, double, char, boolean
  • Kiểu tham chiếu
    • Class
    • Interface
    • Enum
    • Array
    • ...
Kiểu dữ liệu và Exceptions trong Java

Collections Framework

  • Collections Framework: bộ kiểu cấu trúc dữ liệu generic tích hợp của Java
    • Gói kiểu để lưu trữ và thao tác với một nhóm đối tượng
  • Được định nghĩa trong package java.util
    • Cần import để dùng các kiểu của framework
Kiểu dữ liệu và Exceptions trong Java

Còn mảng thì sao?

  • Mảng Java có thể chứa nhóm đối tượng hoặc nguyên thủy
    • Collections Framework cung cấp tập cấu trúc dữ liệu thay thế
  • Cả hai đều có ưu/nhược điểm
Mảng Collections
Không co giãn Kích thước động (tăng/giảm)
Lưu nguyên thủy hoặc đối tượng Chỉ lưu đối tượng
Đồng nhất - phần tử phải cùng kiểu Không đồng nhất - đối tượng có thể khác nhau
Truy cập phần tử bằng ký hiệu [] Dùng phương thức để truy cập đối tượng
Cú pháp khởi tạo đặc biệt {} Dùng new (không có cú pháp khởi tạo đặc biệt)
Kiểu dữ liệu và Exceptions trong Java

Các loại trong Collections Framework

  • Collections Framework gồm hai loại chính: CollectionMap
    • Được biểu diễn bởi hai interface: java.util.Collection & java.util.Map
    • Cả hai có nhiều lớp triển khai
  • Dùng import java.util.*; để dùng mọi kiểu trong Collections Framework

Collections Framework có hai loại chính: Collection và Map

Kiểu dữ liệu và Exceptions trong Java

Collection

  • Collection định nghĩa nhiều dạng nhóm đối tượng
    • Được xác định qua các interface bổ sung
  • Nhóm có thứ tự: List
  • Nhóm không thứ tự: Set
  • Nhóm vào trước-ra trước: Queue
    • Hoạt động như xếp hàng tại ngân hàng/quầy vé
  • Dùng .add(Object).remove(Object) để sửa đổi mọi Collection

Collection gồm List, Set và Map

Kiểu dữ liệu và Exceptions trong Java

Map

  • Cấu trúc dữ liệu Map hoạt động như danh bạ hoặc từ điển
    • Đối tượng "key" -> đối tượng "value"
    • Trong danh bạ, tên -> số điện thoại
    • Trong từ điển, từ -> định nghĩa của từ
  • Dùng key để sửa đổi Map
    • .put(Object key, Object value) để thêm
    • .remove(Object key) để xóa
  • Có nhiều loại Map, như HashMap

Cấu trúc Map hoạt động như danh bạ hoặc từ điển

Kiểu dữ liệu và Exceptions trong Java

Generics

  • Collection và Map là "tham số hóa"
    • Dùng generics của Java để chỉ định kiểu đối tượng trong Collection hoặc Map
    • Cú pháp generic: <Class> với kiểu tham số hóa.
      • < > gọi là toán tử kim cương
ArrayList<String> list = new ArrayList<String>();  // Khởi tạo với generics
Kiểu dữ liệu và Exceptions trong Java

Generics và an toàn kiểu

  • Generics giúp tăng an toàn kiểu
    • Hạn chế kiểu đối tượng được chứa trong CollectionMap
ArrayList<String> list = new ArrayList<String>();
list.add("hello");  // Thêm String là hợp lệ
list.add(new Integer(5));  // Thử thêm Integer gây lỗi biên dịch
Kiểu dữ liệu và Exceptions trong Java

Không dùng generics

ArrayList list2 = new ArrayList();  // Hợp lệ nhưng không cụ thể

list2.add("hello");                 // Bất kỳ loại đối tượng nào cũng có thể được thêm
list2.add(new Integer(5));
Kiểu dữ liệu và Exceptions trong Java

Khai báo và gán biến

  • Khai báo biến và gán có thể tách riêng
ArrayList<String> list = new ArrayList<String>(); // Khai báo và gán trên một dòng

ArrayList<String> list2;     // Khai báo biến...
list2 = new ArrayList<String>();  // ...và gán có thể là 2 câu lệnh
Kiểu dữ liệu và Exceptions trong Java

Ayo berlatih!

Kiểu dữ liệu và Exceptions trong Java

Preparing Video For Download...