Проблема заключается в обнуляемости, а не в типе коллекции, то есть в том, что вы создаете List<Long?>
, где ожидается List<Long>
.
Вы можете воспроизвести сообщение об ошибке (inferred type is MutableList<Long?> but MutableCollection<Long> was expected
) минимально с это:
val foo: MutableCollection<Long> =
listOf(1L, 2, 3, 4, null)
.toMutableList()
И вы можете исправить это, вставив .filterNotNull()
, чтобы удалить потенциальные нули, и преобразовать List<T?>
в List<T>
:
val foo: MutableCollection<Long> =
listOf(1L, 2, 3, 4, null)
.filterNotNull()
.toMutableList()
(Таким образом, ваш .toCollection()
вызов на самом деле не нужен и может быть отброшен)
Некоторые другие примечания указывают c для вашего кода:
Возможно, вы захотите использовать .values
вместо .elements.toList()
, и map { }.filterNotNull()
можно объединить в mapNotNull
, поэтому в итоге вы, вероятно, захотите написать свою цепочку как
hashMapHrm.values
.filter { it.isIn }
.sortedByDescending { it.adjustRssi }
.mapNotNull { it.serialNumber }
.toMutableList()