Sử dụng List để quản lý dữ liệu trong Java

Trong lập trình, việc quản lý dữ liệu là một phần quan trọng và không thể thiếu. Và trong Java, List là một trong những cấu trúc dữ liệu quan trọng nhất để lưu trữ và quản lý các bộ sưu tập các phần tử cùng kiểu dữ liệu. Trong bài viết này, hãy cùng TopDev tìm hiểu về cách sử dụng List trong Java và các tính năng quan trọng của nó.

Cách sử dụng List trong Java

List là một trong những cấu trúc dữ liệu phổ biến nhất trong Java và được sử dụng rộng rãi trong các ứng dụng thực tế. Nó cung cấp cho chúng ta một cách tiện lợi để lưu trữ và quản lý các phần tử theo thứ tự và dưới đây là một số cách chúng ta có thể sử dụng List trong Java:

  • Lưu trữ danh sách các sản phẩm trong một cửa hàng trực tuyến.
  • Quản lý danh sách các khách hàng của một công ty.
  • Lưu trữ thông tin về các bài viết trên một trang blog.
  • Quản lý danh sách các sinh viên trong một lớp học.

Với những ví dụ trên, chúng ta có thể thấy rằng List là một công cụ hữu ích để quản lý các bộ sưu tập dữ liệu trong nhiều lĩnh vực khác nhau.

Tìm hiểu về interface List trong Java

Trong lập trình Java, List được biểu diễn bằng giao diện java.util.List. Điều này có nghĩa là chúng ta không thể tạo một đối tượng List trực tiếp mà phải sử dụng một trong hai triển khai của giao diện này: ArrayList hoặc LinkedList. Giao diện List cung cấp một số phương thức để thao tác với các phần tử trong danh sách. Chúng ta sẽ tìm hiểu về các phương thức này trong phần tiếp theo.

list trong java

Các phương thức của List

Giao diện List cung cấp một số phương thức để thao tác với các phần tử trong danh sách. Dưới đây là một số phương thức quan trọng nhất của List:

  • add(E element): Thêm một phần tử vào cuối danh sách.
  • remove(int index): Xóa phần tử tại chỉ mục đã cho.
  • get(int index): Lấy phần tử tại chỉ mục đã cho.
  • set(int index, E element): Cập nhật phần tử tại chỉ mục đã cho với một phần tử mới.
  • indexOf(E element): Tìm kiếm phần tử đầu tiên trong danh sách bằng với phần tử đã cho và trả về chỉ mục của nó.
  • size(): Trả về số phần tử trong danh sách.

Để hiểu rõ hơn về cách sử dụng các phương thức này, mình cùng đi vào ví dụ cụ thể ở nội dung ngay sau đây.

Sự khác biệt giữa ArrayList và LinkedList trong Java

Trong Java, có hai triển khai chính của giao diện List: ArrayList và LinkedList. Chúng khác nhau về cách chúng lưu trữ và truy cập các phần tử. Dưới đây là một bảng so sánh giữa hai triển khai này:

ArrayList LinkedList
Lưu trữ các phần tử theo thứ tự Lưu trữ các phần tử không theo thứ tự
Có thể truy cập các phần tử nhanh chóng bằng chỉ mục Thời gian truy cập các phần tử tùy thuộc vào vị trí của chúng trong danh sách
Được sử dụng khi cần thao tác với các phần tử theo thứ tự Được sử dụng khi cần thêm hoặc xóa các phần tử thường xuyên
Tốn ít bộ nhớ hơn so với LinkedList Tốn nhiều bộ nhớ hơn do cần lưu trữ các con trỏ giữa các phần tử

Từ bảng so sánh trên, chúng ta có thể thấy rằng cả ArrayList và LinkedList đều có những ưu điểm và nhược điểm riêng. Do đó, chúng ta cần cân nhắc kỹ lưỡng khi lựa chọn triển khai nào phù hợp với yêu cầu của mình.

>>> Để hiểu hơn về sự khác biệt giữa ArrayList và LinkedList, bạn có thể truy cập bài viết phân biệt ArrayList và LinkedList.

Cách tạo và sử dụng ArrayList trong Java

Để tạo một đối tượng ArrayList trong Java, chúng ta có thể sử dụng cú pháp sau:

ArrayList tênBiến = new ArrayList();

Ví dụ: để tạo một danh sách các số nguyên, chúng ta có thể làm như sau:

ArrayList numbers = new ArrayList();

Sau khi đã tạo được đối tượng ArrayList, chúng ta có thể sử dụng các phương thức của List để thao tác với các phần tử trong danh sách. Ví dụ:

numbers.add(5); // Thêm số 5 vào cuối danh sách
numbers.add(10); // Thêm số 10 vào cuối danh sách
numbers.add(0, 15); // Thêm số 15 vào vị trí đầu tiên của danh sách
numbers.remove(1); // Xóa phần tử ở vị trí thứ 2 trong danh sách
int firstNumber = numbers.get(0); // Lấy giá trị của phần tử đầu tiên trong danh sách

Làm thế nào để sắp xếp một List trong Java?

Để sắp xếp một List trong Java, chúng ta có thể sử dụng phương thức sort() của lớp Collections. Ví dụ:

ArrayList numbers = new ArrayList();
numbers.add(5);
numbers.add(10);
numbers.add(3);
numbers.add(8);

Collections.sort(numbers); // Sắp xếp các số theo thứ tự tăng dần

System.out.println(numbers); // Kết quả: [3, 5, 8, 10]

Ngoài ra, chúng ta cũng có thể sử dụng một Comparator để chỉ định cách sắp xếp các phần tử trong danh sách. Ví dụ: để sắp xếp các số theo thứ tự giảm dần, chúng ta có thể làm như sau:

Comparator comparator = Collections.reverseOrder();
Collections.sort(numbers, comparator); // Sắp xếp các số theo thứ tự giảm dần

System.out.println(numbers); // Kết quả: [10, 8, 5, 3]

Tuyển dụng Java lương cao, xem ngay tại TopDev

Cách lặp qua các phần tử của List trong Java

Để lặp qua các phần tử của một List trong Java, chúng ta có thể sử dụng vòng lặp for hoặc foreach. Ví dụ:

ArrayList names = new ArrayList();
names.add("John");
names.add("Mary");
names.add("David");

// Sử dụng vòng lặp for
for (int i = 0; i  fruits = new ArrayList();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");

fruits.remove(1); // Xóa phần tử ở vị trí thứ 2 (tức là "Banana")
System.out.println(fruits); // Kết quả: [Apple, Orange]

fruits.remove("Orange"); // Xóa phần tử có giá trị là "Orange"
System.out.println(fruits); // Kết quả: [Apple]

Phương thức clear() sẽ xóa tất cả các phần tử trong danh sách. Ví dụ:

fruits.clear(); // Xóa tất cả các phần tử trong danh sách
System.out.println(fruits); // Kết quả: []

>>> Xem thêm: Lập trình đa luồng trong Java (Java Multi-threading)

Các ví dụ thực tế về việc sử dụng List

Để hiểu rõ hơn về cách sử dụng List trong các ứng dụng thực tế, chúng ta sẽ đi vào một số ví dụ sau:

Ví dụ 1: Quản lý danh sách sinh viên

Hãy thử tưởng tượng một ngày đẹp trời, một người thân hay người bạn làm giáo viên của bạn nhờ bạn tạo file quản lý học sinh/sinh viên thì đây là lúc bạn “show” kỹ năng của mình thông qua việc sử dụng List. Mỗi sinh viên sẽ có các thông tin như tên, tuổi và điểm số như ví dụ dưới đây:

class Student {
    String name;
    int age;
    double score;

    public Student(String name, int age, double score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }
}

// Tạo một danh sách các sinh viên
ArrayList students = new ArrayList();

// Thêm các sinh viên vào danh sách
students.add(new Student("John", 20, 8.5));
students.add(new Student("Mary", 19, 9.0));
students.add(new Student("David", 21, 7.0));

// In ra thông tin của từng sinh viên
for (Student student : students) {
    System.out.println("Name: " + student.name);
    System.out.println("Age: " + student.age);
    System.out.println("Score: " + student.score);
} 

Kết quả:

Name: John
Age: 20
Score: 8.5
Name: Mary
Age: 19
Score: 9.0
Name: David
Age: 21
Score: 7.0 

list trong java

Ví dụ 2: Lưu trữ lịch sử giao dịch của khách hàng

Trong một ứng dụng quản lý tài chính, bạn cũng có thể sử dụng List để lưu trữ lịch sử giao dịch của khách hàng và mỗi giao dịch sẽ có các thông tin như ngày tháng, loại giao dịch và số tiền. Hãy cùng TopDev xét ví dụ dưới đây:

class Transaction {
    LocalDate date;
    String type;
    double amount;

    public Transaction(LocalDate date, String type, double amount) {
        this.date = date;
        this.type = type;
        this.amount = amount;
    }
}
// Tạo một danh sách các giao dịch
ArrayList transactions = new ArrayList();

// Thêm các giao dịch vào danh sách
transactions.add(new Transaction(LocalDate.of(2021, 10, 1), "Nạp tiền", 1000000));
transactions.add(new Transaction(LocalDate.of(2021, 10, 5), "Rút tiền", 500000));
transactions.add(new Transaction(LocalDate.of(2021, 10, 10), "Thanh toán hóa đơn", 200000));

// In ra thông tin của từng giao dịch
for (Transaction transaction : transactions) {
    System.out.println("Date: " + transaction.date);
    System.out.println("Type: " + transaction.type);
    System.out.println("Amount: " + transaction.amount);
} 

Kết quả:

Date: 2021-10-01
Type: Nạp tiền
Amount: 1000000.0
Date: 2021-10-05
Type: Rút tiền
Amount: 500000.0
Date: 2021-10-10
Type: Thanh toán hóa đơn
Amount: 200000.0

Kết luận

Trong bài viết này, TopDev đã chia sẻ về cách sử dụng List trong Java, cách tạo và sử dụng ArrayList, cách sắp xếp một List, tối ưu hóa hiệu suất khi sử dụng List,…Hy vọng rằng với những thông tin này, các lập trình viên, nhất là các bạn fresher sẽ hiểu rõ hơn về cách sử dụng List trong Java và áp dụng được vào các dự án của mình.

Bài viết chỉ mang tính chất tham khảo

Nội dung được tổng hợp bởi AI và điều chỉnh bởi Ban Biên tập TopDev 

Cập nhật tin tuyển dụng IT lương cao tại TopDev