이번 아이템에서는 Comparable 인터페이스의 비교, 정렬, 제네릭이란 특성을 가진 메서드인 compareTo()에 대해 알아보겠다. compareTo는 단순 동치성 비교에 더해 순서까지 비교할 수 있으며, 제네릭하다. Comparable을 구현했다는 것은 그 클래스의 인스턴스들에는 자연적인 순서가 있음을 뜻한다. Comparable을 구현한 Collections와 Arrays 등의 객체의 배열은 다음처럼 쉽게 정렬할 수 있다. Arrays.sort(/* 배열 객체*/); Collections.sort(/* 컬렉션 하위 객체*/);그 외에도 검색, 극단값 계산, 자동 정렬되는 컬렉션 관리도 쉽게할 수 있다.아래는 중복 제거 후 알파벳으로 출력하는 코드다. /* [code] Item14_Main.jav..
toString을 잘 구현한 클래스는 사용하기에 훨씬 즐겁고, 그 클래스를 사용한 시스템은 디버깅하기 쉽다. 오류 메시지 로깅시 자동으로 호출되여 명확한 상황이 남기 때문이다. 실전에서 toString은 그 객체가 가긴 주요 정보 모두를 반환하는게 좋다. 또한 toString을 구현할 때면 반환값의 포맷을 문서화할지 정해야 한다. 전화번호나 행렬같은 값 클래스라면 문서화하기를 권한다. 그 값 그대로 입출력에 사용하거나 CSV 파일처럼 사람이 읽을 수 있는 데이터 객체로 저장할 수도 있다. 포맷을 명시한다면, 명시한 포맷에 맞는 문자열과 객체를 상호 전환할 수 있는정적 팩토리나 생성자를 함께 제공해주면 좋다. 포맷을 명시하게 될 경우 단점은 평생 그 포맷에 얽매이게 된다. 포맷을 명시하든 아니든 toStr..
equals를 재정의 했을 때 hashcode도 재정의 해야하는 이유 재정의 하지 않을 시 hashcode 일반 규약을 어기게되어 해당 클래스의 인스턴스를 HashMap이나 HashSet 같은 컬렉션의 원소로 사용할 때 문제를 일으킬 것이다. 아래는 object 명세에서 발췌한 규약이다. equals 비교에 사용되는 정보가 변경되지 않았다면, 애플리케이션이 실행되는 동안 그 객체의 hashcode 메서드는 몇번을 호출 해도 일관되게 같은 값을 반환해야한다. 단, 애플리케이션 재 실행시에는 값이 변경되어도 상관 없다. equals(object)가 두 객체를 같다고 판단했다면, 두 객체의 hashcode는 똑같은 값을 반환해야 한다. equals(object)가 두 객체를 다르다고 판단했더라도, 두 객체의 ..
- Total
- Today
- Yesterday
- JMM
- k8s
- Delete
- Replication Controller
- Java Memory Structure
- Java
- kubernetes
- 자바 메모리 구조
- POD
- JVM
- Effective 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 |