Java 비교기 인터페이스 사용자 정의 클래스의 개체를 정렬하는 데 사용됩니다.
이 인터페이스는 java.util 패키지에 있으며 Compare(Object obj1,Object obj2) 및 equals(Object 요소) 2가지 메서드를 포함합니다.
이는 여러 정렬 순서를 제공합니다. 즉, 롤노(rollno), 이름, 나이 등 모든 데이터 멤버를 기준으로 요소를 정렬할 수 있습니다.
Java 비교기 인터페이스의 방법
방법 | 설명 |
---|---|
공개 int 비교(객체 obj1, 객체 obj2) | 첫 번째 개체와 두 번째 개체를 비교합니다. |
공개 부울은 같음(객체 obj) | 현재 개체와 지정된 개체를 비교하는 데 사용됩니다. |
공개 부울은 같음(객체 obj) | 현재 개체와 지정된 개체를 비교하는 데 사용됩니다. |
방법 | 설명 |
---|---|
정수 비교(T o1, T o2) | 첫 번째 개체와 두 번째 개체를 비교합니다. |
공전 | T 유형에서 Comparable 정렬 키를 추출하는 함수를 받아들이고 해당 정렬 키로 비교하는 Comparator를 반환합니다. |
정적 비교기 비교(Function keyExtractor, Comparator keyComparator) | T 유형에서 정렬 키를 추출하는 함수를 받아들이고 지정된 Comparator를 사용하여 해당 정렬 키로 비교하는 Comparator를 반환합니다. |
정적 비교기 비교Double(ToDoubleFunction keyExtractor) | T 유형에서 이중 정렬 키를 추출하는 함수를 허용하고 해당 정렬 키로 비교하는 비교기를 반환합니다. |
정적 비교기 비교Int(ToIntFunction keyExtractor) | T 유형에서 int 정렬 키를 추출하는 함수를 받아들이고 해당 정렬 키로 비교하는 비교기를 반환합니다. |
정적 비교기 비교Long(ToLongFunction keyExtractor) | T 유형에서 긴 정렬 키를 추출하는 함수를 허용하고 해당 정렬 키로 비교하는 비교기를 반환합니다. |
부울 같음(객체 obj) | 현재 개체와 지정된 개체를 비교하는 데 사용됩니다. |
공전 | Comparable 객체를 자연 순서로 비교하는 비교기를 반환합니다. |
정적 비교기 nullsFirst(비교기 비교기) | null을 null이 아닌 요소보다 작게 처리하는 비교기를 반환합니다. |
static Comparator nullsLast(비교기 비교기) | null을 null이 아닌 요소보다 크게 처리하는 비교기를 반환합니다. |
기본 비교기 reversed() | 제공된 비교기의 역순을 포함하는 비교기를 반환합니다. |
공전 | 자연 순서의 역순을 포함하는 비교기를 반환합니다. |
기본 비교기 thenComparing(다른 비교기) | 다른 비교기와 함께 사전순 비교기를 반환합니다. |
기본비교기 thenComparing(기능 키 추출기) | Comparable 정렬 키를 추출하는 함수와 함께 사전순 비교기를 반환합니다. |
기본 비교기 thenComparing(Function keyExtractor, Comparator keyComparator) | 주어진 비교기와 비교할 키를 추출하는 함수와 함께 사전식 순서 비교기를 반환합니다. |
기본 비교기 thenComparingDouble(ToDoubleFunction keyExtractor) | 이중 정렬 키를 추출하는 함수가 포함된 사전순 비교기를 반환합니다. |
기본 비교기 thenComparingInt(ToIntFunction keyExtractor) | int 정렬 키를 추출하는 함수가 포함된 사전순 비교기를 반환합니다. |
기본 비교기 thenComparingLong(ToLongFunction keyExtractor) | 긴 정렬 키를 추출하는 함수가 포함된 사전식 순서 비교기를 반환합니다. |
Java 8 비교기 예
나이와 이름을 기준으로 List의 요소를 정렬하는 예를 살펴보겠습니다.
파일: Student.java
class Student { int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int getRollno() { return rollno; } public void setRollno(int rollno) { this.rollno = rollno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
파일: TestSort1.java
import java.util.*; public class TestSort1{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,'Jai',21)); //Sorting elements on the basis of name Comparator cm1=Comparator.comparing(Student::getName); Collections.sort(al,cm1); System.out.println('Sorting by Name'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } //Sorting elements on the basis of age Comparator cm2=Comparator.comparing(Student::getAge); Collections.sort(al,cm2); System.out.println('Sorting by Age'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Sorting by Name 106 Ajay 27 105 Jai 21 101 Vijay 23 Sorting by Age 105 Jai 21 101 Vijay 23 106 Ajay 27
Java 8 비교기 예: nullsFirst() 및 nullsLast() 메서드
여기서는 null도 포함하는 요소 목록을 정렬합니다.
파일: Student.java
class Student { int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int getRollno() { return rollno; } public void setRollno(int rollno) { this.rollno = rollno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
파일: TestSort2.java
import java.util.*; public class TestSort2{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,null,21)); Comparator cm1=Comparator.comparing(Student::getName,Comparator.nullsFirst(String::compareTo)); Collections.sort(al,cm1); System.out.println('Considers null to be less than non-null'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } Comparator cm2=Comparator.comparing(Student::getName,Comparator.nullsLast(String::compareTo)); Collections.sort(al,cm2); System.out.println('Considers null to be greater than non-null'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Considers null to be less than non-null 105 null 21 106 Ajay 27 101 Vijay 23 Considers null to be greater than non-null 106 Ajay 27 101 Vijay 23 105 null 21