Step-by-Step

[Java] ArrayList<T>에서 contains 사용 본문

언어/JAVA

[Java] ArrayList<T>에서 contains 사용

희주(KHJ) 2022. 12. 29. 16:01

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