Android 사용자 정의 클래스(Custom Class) ArrayList 내 존재여부 판단

개요

여러가지 이유로 인해 개발자가 사용자 정의 클래스(Custom Class)를 사용하는 경우가 많습니다. 이 클래스를 ArrayList 형태로 만들고 자료를 추가해서 사용하게 됩니다. 자료를 추가하기 전 이미 같은 자료가 있는지 알고 싶을 때가 있습니다. 이럴 때 어떻게 해야 하는지 알아보도록 하겠습니다.

ArrayList 자료 존재 여부 판단

ArrayList 내에 자료가 이미 존재하는지의 여부는 다음과 같은 방법으로 판단합니다.

//list: ArrayList<String>

//if (!list.contains("ABC")) {
if ("ABC" !in list) {
    //your code
}

사용자 정의 클래스도 비슷한 방법으로 판단할 수 있을 것 같습니다.

//list: ArrayList<YourCustomClass>

//if (!list.contains(YourCustomClass(yourCustomClass.field1, yourCustomClass.field2))) {
if (YourCustomClass(yourCustomClass.field1, yourCustomClass.field2) !in list) {
    //your code
}

그러나 항상 false 가 반환됩니다. 그 이유는 정확한 비교 방법이 없기 때문입니다.

equals 재정의(equals override)

사용자 정의 클래스에 다음과 같이 equals 메소드를 재정의 합니다.

override fun equals(other: Any?): Boolean {
    return when (other) {
        is YourCustomClass -> {
            other.field1 == this.field1 && other.field2 == this.field2
        }
        else -> false
    }
}

equals 메소드 재정의 후 다시 비교해 보면 정확하게 존재여부가 판단되는 것을 확인하실 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Time limit is exhausted. Please reload the CAPTCHA.