DEV ℧ Developer Diary

[EffectiveJava] item11 - equals를 재정의하려거든 hashCode도 재정의하라.

equals를 재정의하려거든 hashCode도 재정의하라.

왜 해시코드를 재정의 해야할까?

대망의 equals시리즈 제 2탄 값을 동일하게 비교할 수 있도록 재정의를 한다면 hashCode를 재정의 함으로써 객체의 주소값 또한 재정의를 해야 한다.

왜냐? 주소값이 달라지기 때문에, HashMap이나 HashSet같은 컬렉션의 원소로 사용할 때 문제를 일으키게 된다.

다음은 Object...

[Gold5] No.07576 토마토

토마토

No.07576 토마토

문제

철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다.

No.07576 토마토

창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도...

[EffectiveJava] item10 - equals는 일반 규약을 지켜 재정의하라.

equals는 일반 규약을 지켜 재정의하라.

equals를 재정의 하지 않는 경우!

equals 메서드는 재정의하기 쉬워 보이지만 곳곳에 함정이 도사리고 있어서 자칫하면 끔찍한 결과를 초래한다.

만약 담의 상황중에 하나의 상황에 해당한다면, 재정의 하지 않는것이 최선이다.

  • 각 인스턴스가 본질적으로 고유하다.

예를 들면, 값이 아닌...

[DesignPattern] 추상 팩토리 (ABSTRACT FACTORY)

추상 팩토리(ABSTRACT FACTORY)

추상 팩토리 패턴은 서브클래스를 상세히 구현 하지 않아도, 서로 연관성이 있는 여러 객체의 집합(군) 을 생성하기 위해 인터페이스를 제공하는 구조를 말합니다.

활용 방안

추상팩토리는 다음의 경우 사용할 수 있다.

  • 객체가 생성되거나 구성, 표현 되는 방식과 무관하게 시스팀에 독립적으로 만들고자...

[Silver1] No.01697 숨바꼭질

숨바꼭질

No.01697 숨바꼭질

문제

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는...