我有一个对象
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) }