30/09/2018, 18:19

Sort và Interator trong Arraylist và Vector Trong JAVA

Em có 1 lớp SInhVien

public class SinhVien {
String maSv,tenSv;
String lop;
float diem;
}

Em dùng ArrayList và Vector muốn sắp xếp dãy theo 3 tiêu chí thứ nhất là lớp, thứ 2 là tên sinh viên sau đó là điểm.
Nghĩa là đưa ra danh sách cách sv theo lớp sắp theo tên. Nếu cùng tên thì sắp theo điểm
Yêu cầu sử dụng sort trong Collection.

Một vấn đề nữa là In tập hợp sử dụng Interator
Mọi người ai hiểu có thể nói cho em biết Interator là cái gì, dùng để làm gì. Dùng nó như thế nào? khác gì ta dùng for không? Ưu và nhược điểm của nó. Cuối cùng là cho em xin cái ví dụ cho dễ hình dung. Em xin trân thành cảm ơn!

Cương Nguyễn viết 20:26 ngày 30/09/2018

đây là một cách sử dụng Comparable, mình mặc định là tên, lớp, điểm không null nhé nên không check trong hàm compareTo:

public class Test {
    public static void main(String[] args) {
        List<SinhVien> list = new ArrayList<SinhVien>(){{
            add(new SinhVien("Nguyen Van A", "1", 10f));
            add(new SinhVien("Nguyen Van C", "1", 2f));
            add(new SinhVien("Nguyen Van B", "2", 9f));
            add(new SinhVien("Nguyen Van F", "1", 6f));
            add(new SinhVien("Nguyen Van D", "2", 10f));
        }};

        Collections.sort(list);

        for (SinhVien sv : list) {
            System.out.println(sv.lop + " - " + sv.tenSv + " - " + sv.diem);
        }
    }
}

class SinhVien implements Comparable<SinhVien>{
    public String maSv,tenSv;
    public String lop;
    public float diem;

    public SinhVien(String tenSv, String lop, float diem) {
        this.tenSv = tenSv;
        this.lop = lop;
        this.diem = diem;
    }

    @Override
    public int compareTo(SinhVien o) {
        int result = lop.compareTo(o.lop);
        if (result != 0) return result;
        result = tenSv.compareTo(o.tenSv);
        if (result != 0) return result;
        return Float.compare(diem, o.diem);
    }
}

Kết quả:
1 - Nguyen Van A - 10.0
1 - Nguyen Van C - 2.0
1 - Nguyen Van F - 6.0
2 - Nguyen Van B - 9.0
2 - Nguyen Van D - 10.0

Bài liên quan
0