Bản đồ

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

Jim White

Java Developer

Map là bảng tra cứu

  • Map là cấu trúc dữ liệu tra cứu
    • Lưu một "giá trị" tại một "khóa" cụ thể
    • Dùng "khóa" để lấy lại "giá trị"
  • Ví dụ: gọi bác sĩ
    • Họ tra hồ sơ sức khỏe (giá trị) theo tên/ngày sinh (khóa)

Map hoạt động như cấu trúc tra cứu, giống khi gọi phòng khám hỏi tên và ngày sinh để tìm hồ sơ

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

Giao diện Map

  • Giao diện Map định nghĩa các thao tác trên cặp khóa/giá trị
    • Cách lưu hoặc "put" một giá trị tại một khóa
    • Cách "remove" giá trị tại khóa khỏi Map
    • Cách truy xuất giá trị theo khóa
  • Có vài triển khai Map với hành vi tương tự
    • Triển khai phổ biến là HashMap
1 Xem https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html để biết chi tiết
Kiểu dữ liệu và Exceptions trong Java

Khóa và giá trị HashMap

Khóa và giá trị của Map/HashMap có thể cùng hoặc khác kiểu

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

Khởi tạo HashMap

HashMap<Integer, String> map = new HashMap<Integer, String>();
  • Hàm tạo có tham số/ tổng quát của HashMap cần hai kiểu

    • Kiểu thứ nhất = kiểu khóa

      Tham số tổng quát đầu tiên của HashMap dành cho khóa

    • Kiểu thứ hai = kiểu giá trị

      Tham số tổng quát thứ hai của HashMap dành cho giá trị

Kiểu khóa và giá trị trong generics chỉ định kiểu dữ liệu cho khóa và giá trị

  • Cần import java.util.HashMap
Kiểu dữ liệu và Exceptions trong Java

Phương thức HashMap

  • Dùng .put(key,value) để thêm cặp khóa/giá trị vào bảng
  • Dùng .remove(key) để xóa cặp khóa/giá trị tại khóa đó
  • Dùng .get(key) để lấy giá trị tại khóa
import java.util.HashMap
...
HashMap<Integer, String> map
    = new HashMap<Integer, String>();
map.put(0, "Jim");
map.put(1, "James");
map.put(3, null);
map.put(4, "James");
map.remove(0);
System.out.println(map);
{1=James, 3=null, 4=James}
String nickname = map.get(1);
System.out.println(nickname);
James
Kiểu dữ liệu và Exceptions trong Java

Collections

  • java.util.Collections là lớp hỗ trợ
  • Dùng để sắp xếp, điền, sao chép, tìm kiếm, v.v.
    • Chỉ có các phương thức static
1 Xem https://docs.oracle.com/en/java/javase//21/docs/api/java.base/java/util/Collections.html
Kiểu dữ liệu và Exceptions trong Java

Phương thức Collection

  • Thêm nhiều đối tượng vào List
    • addAll(List list, Object a, b, ...)
  • Trả về số lần xuất hiện của một đối tượng trong collection
    • frequency(Collection c, Object o)
  • Đảo thứ tự các đối tượng trong List
    • reverse(List list)
  • Sắp xếp các đối tượng trong List
    • sort(List list)
  • Thay tất cả đối tượng trong List bằng một đối tượng khác
    • fill(List a, Object o)
ArrayList<String> x = new ArrayList<String>();
Collections.addAll(x,
    "milk", "bread", "eggs", "milk");
System.out.println(x);

int cnt = Collections.frequency(x, "milk"); System.out.println(cnt);
Collections.reverse(x); System.out.println(x);
Collections.sort(x); System.out.println(x);
Collections.fill(x, "sugar"); System.out.println(x);
[milk, bread, eggs, milk]

2
[milk, eggs, bread, milk]
[bread, eggs, milk, milk]
[sugar, sugar, sugar, sugar]
Kiểu dữ liệu và Exceptions trong Java

Arrays

  • Đôi khi cần đổi một mảng (ví dụ int[]) thành List
    • Mảng Java không co giãn; ta có thể cần tăng/giảm số phần tử
    • List hỗ trợ nhiều hơn (tìm kiếm, sắp xếp, v.v.)
  • java.util.Arrays là một lớp hỗ trợ khác
    • Cho phép đổi mảng Java thành List
Kiểu dữ liệu và Exceptions trong Java

Ví dụ Arrays

String[] arrayCountries = {"France", "Japan", "Brazil", "Egypt", "China"};
List<String> countries = Arrays.asList(arrayCountries);
System.out.println(countries);
[France, Japan, Brazil, Egypt, China]
Kiểu dữ liệu và Exceptions trong Java

Ayo berlatih!

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

Preparing Video For Download...