하고재비
[JAVA]Comparable , Comparator 본문
Java에서 정렬을 하기위해 두가지 object를 비교하기위해서는
1. comparable 인터페이스 에서 정의한 compareTo() 메소드를 구현
2. comparator 구현
1. Comparable 구현
1-1. Student.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | public class Student implements Comparable{ private int id; private String name; private int age; private String phone; private String email; public Student(int id,String name,int age,String phone,String email){ this.setId(id); this.setName(name); this.setAge(age); this.setPhone(phone); this.setEmail(email); } @Override public int compareTo(Object o) { // TODO Auto-generated method stub int age1 = ((Student)o).getAge(); int age_diff = this.getAge() - age1; return age_diff; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", age=" + age + ", phone=" + phone + ", email=" + email + "]"; } /*getter setter*/ ..... } | cs |
1-2. main
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package AL; import java.util.ArrayList; import java.util.Collections; public class Student_Main { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<Student> students = new ArrayList<>(); students.add(new Student(1, "DeadDE", 27, "1111","111@naver.com")); students.add(new Student(2, "avo", 21, "1111","111@naver.com")); students.add(new Student(3, "Ronaldo", 35, "7777","ronaldo@naver.com")); students.add(new Student(4, "Messi", 30, "1010","messi_@naver.com")); Collections.sort(students); for(Student student:students){ System.out.println(student); } } } | cs |
결과>>
Student [id=2, name=avo, age=21, phone=1111, email=111@naver.com]
Student [id=1, name=DeadDE, age=27, phone=1111, email=111@naver.com]
Student [id=4, name=Messi, age=30, phone=1010, email=messi_@naver.com]
Student [id=3, name=Ronaldo, age=35, phone=7777, email=ronaldo@naver.com]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class Student{ private int id; private String name; private int age; private String phone; private String email; public Student(int id,String name,int age,String phone,String email){ this.setId(id); this.setName(name); this.setAge(age); this.setPhone(phone); this.setEmail(email); } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", age=" + age + ", phone=" + phone + ", email=" + email + "]"; } /*getter setter*/ } | cs |
1 2 3 4 5 6 7 8 9 10 11 | import java.util.Comparator; public class Student_name_Comparator implements Comparator<Student>{ @Override public int compare(Student o1, Student o2) { // TODO Auto-generated method stub String name1 = o1.getName(); String name2 = o2.getName(); int diff = name1.compareTo(name2); return diff; } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import java.util.ArrayList; import java.util.Collections; public class Student_Main { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<Student> students = new ArrayList<>(); students.add(new Student(1, "DeadDE", 27, "1111","111@naver.com")); students.add(new Student(2, "avo", 21, "1111","111@naver.com")); students.add(new Student(3, "Ronaldo", 35, "7777","ronaldo@naver.com")); students.add(new Student(4, "Messi", 30, "1010","messi_@naver.com")); Collections.sort(students, new Student_name_Comparator()); for(Student student : students){ System.out.println(student); } } } | cs |
Collections.sort(students, new Student_name_Comparator());
결과 >>
Student [id=1, name=DeadDE, age=27, phone=1111, email=111@naver.com]
Student [id=4, name=Messi, age=30, phone=1010, email=messi_@naver.com]
Student [id=3, name=Ronaldo, age=35, phone=7777, email=ronaldo@naver.com]
Student [id=2, name=avo, age=21, phone=1111, email=111@naver.com]
'JAVA' 카테고리의 다른 글
[자료구조] 연결리스트 (0) | 2017.12.18 |
---|---|
[JAVA]ArrayList (0) | 2017.12.13 |
[JAVA]추상클래스와 인터페이스 (0) | 2017.12.13 |
[JAVA] 생성자 (0) | 2017.12.08 |
[JAVA] 메소드 오버라이딩 과 오버로딩 (0) | 2017.12.07 |