VieTopik
Tiếng HànTiếng Anh.NET (C#)Java
  • Góc học tập
Tải app
  • Thư viện
  • Luyện thi
  • Cẩm nang
  • Góc học tập
Java CoreDữ liệu
Bài 8/19
5 phút

Array và List

Nội dung bài · 6 mục
  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Duyệt bằng foreach
  4. 4.Thử ngay
  5. 5.Lỗi hay gặp
  6. 6.Tóm tắt

Một giỏ hàng có nhiều món, một cửa hàng có nhiều sản phẩm. Khi có hàng trăm món, không thể tạo từng biến price1, price2, price3. Bài này giới thiệu cách lưu nhiều giá trị trong một biến.

Khái niệm

🗃️ Array: danh sách các phần tử cùng kiểu, số lượng cố định ngay khi tạo.

📋 List: danh sách các phần tử cùng kiểu, thêm và bớt phần tử được, viết là List<kiểu>.

👣 foreach (for-each): vòng lặp đi qua lần lượt từng phần tử của một danh sách, viết là for (kiểu x : danh_sách).

Phần tử được đánh số từ 0. Phần tử đầu ở vị trí 0, phần tử cuối ở vị trí số lượng - 1.

Ví dụ

void main() {
    long[] prices = { 5000, 12000, 30000 };
    System.out.println(prices[0]);       // 5000
    System.out.println(prices.length);   // 3

    List<String> cart = new ArrayList<>();
    cart.add("Bút bi");
    cart.add("Vở");
    cart.add("Thước");
    cart.remove("Vở");

    System.out.println(cart.size());     // 2
    System.out.println(cart.get(1));     // Thước
}
  • long[] là array chứa long. Tạo xong thì luôn có đúng 3 phần tử, đọc bằng prices[0].
  • List<String> là list chứa String, tạo bằng new ArrayList<>(). add thêm vào cuối, remove xoá phần tử, get(1) đọc phần tử ở vị trí 1.
  • Array đếm bằng .length, list đếm bằng .size().
  • Trong < > phải ghi Long, Integer thay cho long, int: List<Long>, không viết List<long>.
  • Trong thực tế, list được dùng nhiều hơn vì thêm bớt được.

Duyệt bằng foreach

foreach lấy lần lượt từng phần tử, không cần biến đếm. List dưới đây được điền sẵn phần tử bằng List.of(...) ngay lúc khai báo:

void main() {
    List<Long> prices = List.of(5000L, 12000L, 30000L);

    long total = 0;
    for (long price : prices) {
        total = total + price;
    }

    System.out.println(total);   // 47000
}

Cần biết vị trí của phần tử thì dùng for với prices.get(i). Chỉ cần giá trị thì dùng foreach. List tạo bằng List.of không thêm bớt được.

Thử ngay

Dán vào Main.java rồi chạy java Main.java:

void main() {
    List<String> cart = new ArrayList<>();
    cart.add("Bút bi");
    cart.add("Vở");
    cart.add("Bút bi");

    System.out.println(cart.size());
    System.out.println(cart.contains("Thước"));

    for (String item : cart) {
        System.out.println("- %s".formatted(item));
    }
}

Đoán trước khi chạy: thêm "Bút bi" hai lần thì cart.size() là 2 hay 3?

Xem kết quả
3
false
- Bút bi
- Vở
- Bút bi

Là 3. List giữ nguyên mọi phần tử được thêm vào, kể cả phần tử trùng, và giữ đúng thứ tự thêm.

Lỗi hay gặp

Truy cập ngoài phạm vi. List có 3 phần tử thì vị trí cuối là 2, không phải 3.

// SAI — lỗi khi chạy: không có phần tử ở vị trí 3
void main() {
    List<String> cart =
        List.of("Bút bi", "Vở", "Thước");
    System.out.println(cart.get(3));
}
// ĐÚNG — phần tử cuối ở vị trí size() - 1
void main() {
    List<String> cart =
        List.of("Bút bi", "Vở", "Thước");
    System.out.println(cart.get(cart.size() - 1));
}

Thêm phần tử vào array. Array cố định số lượng, không có add.

// SAI — lỗi compile: array không có add
void main() {
    String[] tags = { "sale", "new" };
    tags.add("hot");
}
// ĐÚNG — cần thêm bớt thì dùng List
void main() {
    List<String> tags = new ArrayList<>();
    tags.add("sale");
    tags.add("new");
    tags.add("hot");
}

Tóm tắt

  • Array cố định số lượng, list thêm bớt được. Thường dùng list.
  • Vị trí đánh số từ 0, phần tử cuối ở vị trí size() - 1.
  • add, remove, get, contains, size() là những thao tác hay dùng của list.
  • foreach duyệt từng phần tử khi không cần biết vị trí.

Tự kiểm tra

0/3 câu
Câu 1

int[] scores = { 8, 9, 10 }; System.out.println(scores[1]); In ra gì?

Câu 2

Bạn cần lưu danh sách món khách thêm vào giỏ, số món thay đổi liên tục. Nên dùng gì?

Câu 3

List<Integer> ids có 5 phần tử. Vòng lặp for nào duyệt đúng hết, không lỗi?

StringMap

Nội dung bài

  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Duyệt bằng foreach
  4. 4.Thử ngay
  5. 5.Lỗi hay gặp
  6. 6.Tóm tắt