sjiwon   2년 전

Queue<Ponit> q = new LinkedList<>(); 이렇게 큐를 구현하고

q.offer(new Point(1,1));

q.offer(new Point(2, 2)); 이렇게 (1,1), (2,2) 좌표를 offer하고

좌표 (1, 1), (1, 3)이 큐에 있는지 확인하려고

q.contains(new Point(1, 1))

q.contains(new Point(1, 3))이렇게 했는데

둘다 false가 나오네요

저 접근이 잘못된거는 알겠는데 어떤게 잘못되었고 어떻게 고쳐야 할지를 모르겠네여

fccva   2년 전

자바에서 객체의 값을 비교하려면

public boolean equals(Object o)

public int hashCode()

두 가지 메서드를 Point 객체에 오버라이딩 해줘야합니다. 객체 둘이 같다는 걸 어떻게 구분할지에 대한 방법을 기술해줘야합니다.

구현하지 않으면 단순히 객체의 주소로 비교합니다.

새로 만든 객체와 주소가 같을 리 없으므로 false가 나옵니다.

sjiwon   2년 전

equals()는 이해갔는데 contains는 어떻게 구현해야 하는거져?

sjiwon   2년 전

Queue안에 Point :: (1, 1) (1, 2) (1, 4) (2, 5) 이렇게 존재할 경우

제가 원하는건 (1, 1), (10, 1)이 Queue에 contains인지 확인후 결과를 true, false 이렇게 나오길 원합니다

fccva   2년 전

equals, hashCode를 Point 클래스에 구현하면

contains 내부에서 Point 클래스의 equals, hashCode를 이용해서 값을 비교해서 알아서 해줍니다.

sjiwon   2년 전

아 해결됐네여 정말 감사드려영

댓글을 작성하려면 로그인해야 합니다.