Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 참조 계수
- 이펙티브 자바
- Container
- sentry
- kubernetes
- 과제의 분리
- 아웃풋법칙
- 칭기즈칸의 위대한 장군 수부타이
- HTML
- node
- 도파민형 인간
- ESG
- 모두가 기다리는 사람
- apache kafka
- Infresh
- 히든 스토리
- try-with-resources
- 부자의그릇
- 수부타이
- java
- 공헌감
- 월칙
- 뉴 컨피던스
- try width resources
- 레퍼런스 복사
- 쿠버네티스
- 비메모리 자원
- colllection
- CSS
- docker
Archives
- Today
- Total
Hi
hashCode / equals 본문
hashCode / equals 객체의 동등성에 판단에 사용되는 메소드
import java.util.*;
class User implements Comparable<User> {
// class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(User o) {
// return Integer.compare(age, o.age);
return name.compareTo(o.name);
}
// hashCode / equals
// : 객체의 동등성에 판단에 사용되는 메소드
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (this == obj)
return true;
// User의 자식 클래스가 왔을 때 어떻게 동작하게 하겠는가?
if (obj.getClass() == User.class) // 1. 동작하지 않는다.
// if (!(obj instanceof User)) // 2. 동작한다.
return false;
User u = (User) obj;
return Objects.equals(name, u.name) &&
age == u.age;
}
}
// 상속: is-a
// Mother is a User
class Mother extends User {
private int childrenCount;
public Mother(String name, int age, int childrenCount) {
super(name, age);
this.childrenCount = childrenCount;
}
}
public class Program_0321 {
public static void main(String[] args) {
Set<User> user = new TreeSet<>();
user.add(new User("Tom1", 45));
user.add(new User("Tom2", 43));
user.add(new User("Tom3", 42));
user.add(new User("Tom4", 44));
user.add(new User("Tom1", 45));
user.add(new Mother("Tom5", 60, 3));
for (User e : user) {
System.out.println(e);
}
}
/*
public static void main(String[] args) {
List<String> list = Arrays.asList(
"Tom",
"Bob",
"구",
"이",
"홍",
"허",
"허",
"허",
"허",
"허"
);
Set<String> s = new TreeSet<>(list);
for (String e : s) {
System.out.println(e);
}
}
*/
}
'Programming > Java' 카테고리의 다른 글
Java, 객체(class)를 정렬할 수 있게 하려면 (0) | 2018.04.03 |
---|---|
자료구조 (0) | 2018.04.02 |
Reflection (0) | 2018.04.02 |
얕은 복사, 깊은 복사, 참조 계수(Reference Counting) (0) | 2018.03.30 |
Exception(예외)와 try-with-resources (0) | 2018.03.29 |