Distinct
는 Observable이 배출하는 항목들 중 중복을 제거
한 항목들을 배출한다.
Observable.just(1, 2, 2, 3, 4, 4, 5)
.distinct()
.subscribe { println(it) }
1
2
3
4
5
이번에도 뉴진스 리스트를 이용해 예제를 만들어 보도록 하겠습니다.
제가 만들어볼 예제는 뉴진스 5명의 멤버 리스트에서 똑같은 하니를 추가해 중복이 되게 하여 중복을 제거해 보도록 하겠습니다.
fun distinct(): Observable<NewJeans> {
return Observable.fromIterable(newJeansList)
}
.distinct()
이 부분을 실행하면 리스트에서 중복이 되는 부분을 제거해 준다. distinct()
// .distinct {
// it.age
// }
.distinct()
.subscribe(
{
Log.d("distinct", "onNext : $it")
},
{
Log.d("distinct", "onError ${it}")
},
{
Log.d("distinct", "중복을 제거")
}
).let { _ -> }
}
}
val newJeansList = mutableListOf<NewJeans>(
NewJeans(1, "민지", 20),
NewJeans(2, "하니", 20),
NewJeans(3, "다니엘", 19),
NewJeans(4, "해린", 18),
NewJeans(5, "혜인", 16),
NewJeans(4, "해린", 18)
)
data class NewJeans
(
val id: Long,
val name: String,
val age: Int
)
.distinct {
it.age
}
distinct()