nozzleSaleReport
не помогает в этом случае.Если nozzleStateList
уже отсортировано по nozzleStateDate
по возрастанию , то вам нужно:
val dif = nozzleSortedList.last().nozzleValue - nozzleSortedList[nozzleSortedList.size - 2].nozzleValue
Если nozzleStateList
не отсортировано, то сначала нужно отсортировать его по убыванию :
val nozzleSortedList= nozzleStateList.sortedByDescending { it.nozzleStateDate }
val dif = nozzleSortedList[0].nozzleValue - nozzleSortedList[1].nozzleValue
В любом случае вы должны убедиться, что размер списка не меньше 2.Кроме того, поскольку nozzleStateDate
является String
, он должен быть в правильном формате,как yyyy-MM-dd
, так что это сопоставимо, и сортировка будет выполнена правильно.редактироватьЧтобы применить вычитание ко всем элементам в списке, вы можете сделать это:
nozzleStateList.forEachIndexed { index, item ->
if (index < nozzleStateList.size - 1)
item.nozzleValue -= nozzleSortedList[index + 1].nozzleValue
}
, но вы должны изменить определение nozzleValue
в классе данных с val
наvar
.