HashSet<E>
TreeSet<E>
가나다라...
)<aside> 💡 equals 메소드와 동등성 체크
Object의 boolean equals(Object other) 동일성체크 현재 객체와 다른 객체가 완전히 동일한 객체인지 여부를 확인 해시코드, 참조값이 같으면 true를 반환
String의 boolean equals(Object other) 동등성체크 (어떤 내용이 같을 때 같은 것으로 봄) 현재 String객체와 다른 String객체와 문자열 내용이 같으면 true를 반환
⇒ String처럼 동등성 비교를 하도록 하고 싶다면, Object의 equals, hashCode 메소드를 재정의해야 한다.
source - generate hashcode() and equals()
를 이용해 간편하게 할 수 있다.</aside>
// hashCode, equals() 의 재정의 예시
// 사용자의 정보를 표현하는 User 클래스에서 사용자번호 no가 같아도 같은 객체라고 보게 할 경우
@Override
public int hashCode() {
return Objects.hash(no);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
return no == other.no;
}
<aside> 💡 웹개발 업무로직에서는 자바에서 정렬을 쓸 일은 사실 많지 않다. DB에서 데이터를 가져와 ArrayList에 담기 때문에.
</aside>
반환값, 참조변수, 매개변수 타입은 각 구현객체가 아닌 인터페이스 타입 Set<E>, SortedSet<E>으로 설정한다.
Set<E> x = new HashSet<>();
SortedSet<E> x = new TreeSet<>();