원본 Observable이 배출하는 항목들을 키(Key) 별로 묶은 후 Observable에 담는다. 이렇게 키 별로 만들어진 Observable들은 자기가 담고 있는 묶음의 항목들을 배출한다.
GroupBy를 사용해 뉴진스에서 19세 이상인 멤버들만 묶어 보도록 하겠습니다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
groupBy()
.groupBy {
it.age
}
.filter{
it.key!! >=19
}
.subscribe(
{ group ->
group.subscribe(
{
Log.d("groupBy", "key : ${group.key} - value : $it")
}, {
Log.d("groupBy", "onError ${it}")
}
).let { }
},
{
Log.d("groupBy", "onError ${it}")
},
{
Log.d("groupBy", "")
}
).let { _ -> }
}
}
val newJeansList = mutableListOf<NewJeans>(
NewJeans(1, "민지", 20),
NewJeans(2, "하니", 20),
NewJeans(3, "다니엘", 19),
NewJeans(4, "해린", 18),
NewJeans(5, "혜인", 16),
)
data class NewJeans
(
val id: Long,
val name: String,
val age: Int
)
fun groupBy(): Observable<NewJeans> {
return Observable.fromIterable(newJeansList)
}