Android RxJava根据其参数对对象进行排序,该参数是另一个对象的列表



我有一个对象

data class Question(
var publishDate: DateTime?,
var tags: List<QuestionTags>
etc.

现在按publishDate排序val sortedQuestions = questions.sortedBy { it.publishDate }

但我想根据它的一个标签chapterId对它进行排序。QuestionTags看起来像这个

data class QuestionTags(
val id: Long,
val chapterId: Long?
etc.

我试着做一些RxJava魔术

sortedQuestions = 
questions.flatMap { it.tags }
.filter { it.chapterId != null }
.map { sortedQuestions[0] }
.sortedBy { it.blablabla }

但它无论如何都不起作用。

如何.map.flatMap实现它?

我试图将其平面映射到QuestionTags,而不是映射到Question

sortedQuestions =
questions.flatMap { it.tags }
.filter { it.chapterId != null }
.map { Question() }

但在.map { Question() }中,它迫使我将值传递给所有构造函数参数,这是我不想做的

它应该按照列表中的第一个chapterId进行排序。如果两者都有相同的chapterId,那么它们应该按照publishDate进行排序,就像已经完成的那样

那么您根本不需要flatMap(或RxJava(:

questions.sortedBy { Pair(it.tags.firstOrNull(), it.publishDate) }

最新更新