我试图用 Stream 替换我的 while 循环,但是当我使用 Stream 版本时,最后一个元素总是丢失。我想我明白为什么它丢失了,但我不知道如何解决这个问题。有什么建议吗?还有更好的方法吗?谢谢
使用流:
if(cursor.moveToFirst) {
val result = Stream.continually((
Song(
cursor.getLong(c(BaseColumns._ID)),
cursor.getString(c(MediaColumns.TITLE))
),
cursor.moveToNext))
.takeWhile(_._2)
.map(_._1)
result.toList
}
这是while循环版本工作正常。
cursor.moveToFirst()
var i = 0
var list: List[Song] = List.empty
while (i < cursor.getCount()) {
val s = Song(
cursor.getLong(c(BaseColumns._ID)),
cursor.getString(c(MediaColumns.TITLE)))
i = i + 1
list = list :+ s
cursor.moveToNext()
笔记:
移动到下一个
将光标移动到下一行。如果光标已经超过结果集中的最后一个条目,则此方法将返回 false。