Notice
Recent Posts
Recent Comments
Link
SeouliteLab
[Java/자바] 객체 비교 (==, equals, Comparable, Comparator) 예제 & 설명 본문
자바에서 객체를 비교하는 방법에는 다양한 방법이 있습니다. 이 글에서는 '==' 연산자, equals 메서드, Comparable 인터페이스, Comparator 인터페이스를 중심으로 설명하고, 각각의 예제를 통해 구체적으로 살펴보겠습니다.
1. '==' 연산자
'==' 연산자는 참조 변수가 참조하고 있는 객체의 주소값을 비교합니다. 즉, 두 객체가 동일한 객체인지를 확인합니다.
String str1 = new String("Hello");
String str2 = new String("Hello");
boolean result = (str1 == str2);
System.out.println(result); // 출력 결과: false
위 예제에서 str1과 str2는 각각 새로운 객체를 생성하였으므로, '==' 연산자로 비교할 때 false가 출력됩니다.
2. equals 메서드
equals 메서드는 객체의 내용을 비교합니다. 따라서 두 객체가 동일한 값을 가지고 있는지를 확인할 수 있습니다.
String str1 = new String("Hello");
String str2 = new String("Hello");
boolean result = str1.equals(str2);
System.out.println(result); // 출력 결과: true
위 예제에서 equals 메서드를 사용하여 두 문자열 객체의 내용을 비교했기 때문에 true가 출력됩니다.
3. Comparable 인터페이스
Comparable 인터페이스는 객체의 기본 정렬 기준을 제공합니다. 객체 자신과 다른 객체를 비교할 수 있는 compareTo 메서드를 구현해야 합니다.
import java.util.*;
class Student implements Comparable<Student> {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int compareTo(Student s) {
return this.id - s.id;
}
}
public class Main {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student(3, "Alice"));
students.add(new Student(1, "Bob"));
students.add(new Student(2, "Charlie"));
Collections.sort(students);
for (Student s : students) {
System.out.println(s.id + " " + s.name);
}
}
}
위 예제는 학생 객체를 정렬하기 위해 Comparable 인터페이스를 구현한 예시입니다. 학생 객체는 학번을 기준으로 정렬됩니다.
4. Comparator 인터페이스
Comparator 인터페이스는 객체의 정렬 기준을 정의하는 데 사용됩니다. 객체를 직접 수정할 필요 없이 새로운 정렬 기준을 제공할 수 있습니다.
import java.util.*;
class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
class IdComparator implements Comparator<Student> {
public int compare(Student s1, Student s2) {
return s1.getId() - s2.getId();
}
}
public class Main {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student(3, "Alice"));
students.add(new Student(1, "Bob"));
students.add(new Student(2, "Charlie"));
Collections.sort(students, new IdComparator());
for (Student s : students) {
System.out.println(s.getId() + " " + s.getName());
}
}
}
'프로그래밍' 카테고리의 다른 글
[Java/자바] Objects.equals() 메서드로 객체 비교하기 (0) | 2024.03.19 |
---|---|
[Java/자바] List에서 특정 문자열이 들어있는지 확인하는 방법 (0) | 2024.03.19 |
[Java/자바] 익명 함수에서 상수 및 변수 참조 (0) | 2024.03.19 |
[Java/자바] 익명 클래스(Anonymous class) (0) | 2024.03.19 |
[Java/자바] 변수의 유효 범위 (Variable Scope) (0) | 2024.03.19 |