본문 바로가기

ANDROID

[안드로이드] ArrayList에서 contains() 가 객체를 발견하지 못할때, equals를 Overide 하자.

문제는 무엇이였나면 Food 라는 유형의 객체를 담는 ArrayList에 a라는 객체를 추가하고


다시 내용이 같은 a라는 객체를 추가하려할때 방지하고 감지할수 있도록 하려 햇는데


기존 contains() 메소드로는 있는 객체를 항상 감지하지 못하고 똑같은 객체 a를 다시 추가하는 경우가 있어 


열심히 뒤졌더니 해결책이 있었다.


Food 클래스 내부에 equals(Object object) 를 Override 하여 


Food 클래스 안에서 비교하고 싶은 값을 아래처럼 지정해주면 (나같은 경우에는 Food 클래스의 name 값이 같으면 같은 자료라고 보게 했다.)


contains() 를 해주어도 조건에 해당하는 객체가 있으면 true 값을 리턴하여준다. 


@Override
public boolean equals(Object object) {
boolean sameSame = false;

if (object != null && object instanceof Food){
sameSame = this.name == ((Food) object).getName();
}

return sameSame;
}


출처 : http://stackoverflow.com/questions/2642589/how-does-a-arraylists-contains-method-evaluate-objects