Step-by-Step
[Java] ArrayList<T>에서 contains 사용 본문
ArrayList에 객체를 넣고, 새로운 객체를 생성(new)해서 contains를 사용하면 무조건 false가 나온다
ArrayList<Cloud> arr = new ArrayList<>();
arr.add(new Cloud(3,4));
arr.contains(new Cloud(3,4));
// → false
객체 비교 자체가 안의 값보다 주소값으로 비교하기 때문에,
비교를 하고싶으면 == 말고 equals 연산자를 이용해야 한다
또한 contains는 equals 바탕으로 수행하기 때문에,
만약 ArrayList<T>의 객체 비교를 원하면(=contains 사용을 원하면) equals를 override 해서 사용하면 된다
static class Cloud {
public int x, y;
public Cloud(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public boolean equals(Object object) {
return this.x == ((Cloud)object).x && this.y == ((Cloud)object).y;
}
}
이 코드는 마법사 상어와 비바라기 (본인) 문제 풀이의 일부분이다
https://www.acmicpc.net/problem/21610
(그냥 참고용으로 가져옴)
'언어 > JAVA' 카테고리의 다른 글
[Java] 백준 1916 - 최소비용 구하기 (0) | 2023.01.12 |
---|---|
[Java] 백준 1753 - 최단경로 (0) | 2023.01.12 |
[Java] 백준15684 - 사다리 조작 (0) | 2022.12.22 |
[Java] 백준 1562 - 개근상 (0) | 2022.12.20 |
[Java] 백준 1976 - 여행 가자 (0) | 2022.12.01 |
Comments