ตัวอย่างการเรียงวัตถุโดยใช้ Collection.sort ในจาวา

ในภาษาจาวา เมธอด Collection.sort มีโอเวอร์โหลด  2 ตัวคือ  Collection.sort( list) และ Collection.sort(list, comparator) ซึ่งช่วยให้เราสามารถลำดับวัตถุที่อยู่ใน list  อย่างง่ายได้ โดยลำดับจะเรียงตามธรรมชาติของชนิดข้อมูลที่นำมาเปรียบเทียบ จากน้อยไปหามาก อ่านเพิ่มเติม(English)

ต่อไปนี้ผมจะยกตัวอย่างการเรียงลำดับคลาส Student ที่ได้กล่าวถึงในบทความที่แล้ว(ตัวอย่างการใช้ JTable บน Netbeans IDE) โดยปรับปรุงคลาส Student ด้วยการอิมพลีเมนต์อินเตอร์เฟส Comparable<T>   โดยจะนำ gpa  ของนักเรียนมาใช้ในการเรียงลำดับครับ

//ไฟล์ Student.java

public class Student implements Comparable<Student>{

    private String id;
    private String name;
    private double gpa;

    public Student(String id, String name,double gpa ) {
        this.id = id;
        this.name = name;
        this.gpa = gpa;
    }

    public double getGpa() {
        return gpa;
    }

    public void setGpa(double gpa) {
        this.gpa = gpa;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public int compareTo(Student o) {
        return ((Double)gpa).compareTo(o.getGpa());
    }

}

//ไฟล์ StudentSort.java

public class SortStudent {

    public static void main(String[] args){

        List<Student> students=new ArrayList<Student>();
        System.out.println("-----Before sort----");
        students.add(new Student("S003","Nattapong",3.25));
        students.add(new Student("S001","Pumin",2.50));
        students.add(new Student("S002","Jingjai",3.00));
        students.add(new Student("S005","Boonhome",1.75));
        students.add(new Student("S004","Kamron",4.00));
        printList(students);
        Collections.sort(students);
        System.out.println("----After sort----");
        printList(students);
    }

    private static void printList(List<Student> students) {
        System.out.printf("%-5s %-10s %-5s\n","#ID","#Name","#GPA");
        for(Student s: students){
            System.out.printf("%-5s %-10s %-5.2f\n"
                 , s.getId(), s.getName(), s.getGpa());
        }
    }
}

ผลการรันคลาส SortStudent เป็นดังนี้
—–Before sort—-
#ID #Name #GPA
S003 Nattapong 3.25
S001 Pumin 2.50
S002 Jingjai 3.00
S005 Boonhome 1.75
S004 Kamron 4.00
—-After sort—-
#ID #Name #GPA
S005 Boonhome 1.75
S001 Pumin 2.50
S002 Jingjai 3.00
S003 Nattapong 3.25
S004 Kamron 4.00

จากนั้นผมเปลี่ยนเมธอด compareTo ในคลาส Student ใหม่เพื่อลำดับตาม id ดังนี้

public int compareTo(Student o) {
        return id.compareTo(o.getId());
}

ผลการรันใหม่เป็นดังนี้ครับ
—–Before sort—-
#ID #Name #GPA
S003 Nattapong 3.25
S001 Pumin 2.50
S002 Jingjai 3.00
S005 Boonhome 1.75
S004 Kamron 4.00
—-After sort—-
#ID #Name #GPA
S001 Pumin 2.50
S002 Jingjai 3.00
S003 Nattapong 3.25
S004 Kamron 4.00
S005 Boonhome 1.75

ครับสำหรับบทความเรียงลำดับวัตถุด้วย Collection.sort ขอจบไว้เพียงแค่นี้ ไว้พบกันใหม่กับบทความต่อไปนะครับ : )

Advertisements

One thought on “ตัวอย่างการเรียงวัตถุโดยใช้ Collection.sort ในจาวา

Add yours

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

Up ↑

%d bloggers like this: