我有这个方法:
filteredListIn.addAll(Stream.of(listRef)
.filter(results ->
results.getTitle().contains(query.toString().toLowerCase())
));
Run Code Online (Sandbox Code Playgroud)
有了这两个变量:
private List<Results> listRef = new ArrayList<>();
List<Results> filteredListIn = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
但我得到
为 addAll(Stream) 找到了已过滤的ListIn.addAll(Stream.of(listRef) ^ 方法 Collection.addAll(Collection) 不适用(参数不匹配;Stream 无法转换为 Collection)方法 List.addAll(Collection) 不适用
有什么问题,我该如何解决?
这可能是因为我使用外部库来支持 api 24 下的流吗?
通常我从我的 dao 挂起功能返回:
@Dao
interface DataDao {
@Query("SELECT * FROM data")
fun getAllData(): List<Data>
}
Run Code Online (Sandbox Code Playgroud)
并处理存储库中的调用:
class DataRepository(
private val dataDao: DataDao
) {
fun getAllData(): Flow<DataState> = flow {
val cacheResult = safeDatabaseCall(dispatcher = Dispatchers.IO) { dataDao.getAllData() }
//handle cacheResult, convert to DataState, emit DataState values
}.flowOn(Dispatchers.IO)
Run Code Online (Sandbox Code Playgroud)
}
带着一般的乐趣:
suspend fun <T> safeDatabaseCall(
dispatcher: CoroutineDispatcher,
cacheCall: suspend () -> T?
): CacheResult<T?> {
return withContext(dispatcher) {
try {
withTimeout(10000L) {
CacheResult.Success(cacheCall.invoke())
}
} catch (t: Throwable) {
when (t) …
Run Code Online (Sandbox Code Playgroud)