Котлин;вычесть значение в текущем объекте из значения в предыдущем объекте и вставить в новый объект - PullRequest
0 голосов
/ 07 марта 2019

У меня есть список объектов nozzleState, которые отсортированы по nozzleStateDate.Класс данных, подобный приведенному ниже1005 *

Другими словами, если для поля nozzleValue в списке есть

(10, 8, 6, 3) 

, результат будет

(10-8, 8-6, 6-3, 3-0)

1 Ответ

2 голосов
/ 07 марта 2019

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...