Lấy list con trong ArrayList với ví dụ cụ thể

Khi chúng ta có một ArrayList có lượng lớn dữ liệu, và chúng ta cần lấy ra một đoạn nhỏ trong đó để xử lý. 

May mắn, ArrayList cung cấp cho chúng ta sẵn method subList() để lấy danh sách con trong ArrayList cha từ vị trí fromIndex đến toIndex.

List<E> subList(int fromIndex, int toIndex);
import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        List<Integer> arrs = new ArrayList<>();
        arrs.add(1);
        arrs.add(2);
        arrs.add(3);
        arrs.add(4);
        List<Integer> subArrs = arrs.subList(0,2);

        subArrs.forEach(integer -> System.out.print(integer + " "));
    }
}

Output: 1 2

Thêm một ví dụ nữa nha, lần này mình sẽ kết hợp với sắp xếp trong ArrayList.

Cho một ArrayList chứa danh sách các sinh viên (tên, tuổi, giới tính, mã số sinh viên). Lấy danh sách 3 sinh viên có tuổi cao nhất và xuất thông tin ra màn hình.

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student("A", 19, "NAM", 6));
        students.add(new Student("B", 20, "NU", 1));
        students.add(new Student("C", 19, "NAM", 3));
        students.add(new Student("D", 18, "NU", 2));
        students.add(new Student("E", 21, "NU", 5));
        students.add(new Student("F", 22, "NAM", 8));
        students.add(new Student("G", 23, "NU", 9));
        students.add(new Student("H", 24, "NAM", 10));
        students.add(new Student("I", 25, "NU", 7));
        students.add(new Student("K", 18, "NAM", 4));

        Collections.sort(students, Comparator.comparingInt(Student::getAge));
        students.subList(students.size() - 3, students.size()).forEach(student -> System.out.println(student.toString()));
    }
}

Output:

Student{name=’G’, age=23, sex=’NU’, id=9}
Student{name=’H’, age=24, sex=’NAM’, id=10}
Student{name=’I’, age=25, sex=’NU’, id=7}

Note:

Nếu chúng ta truyền vào toIndex lớn hơn số lượng phần tử của mảng thì chúng ta sẽ nhận lại IndexOutOfBoundsException.

Nếu fromIndex lớn hơn toIndex thì chúng ta sẽ nhận IllegalArgumentException.

‹Previous Next›

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x