README.md

Домашнее задание к занятию “11 Коллекции и лямбды в Kotlin”

Цель задачи – изучить коллекции Kotlin.

Задача №1. Много заметок

Дополните результат из предыдущего задания таким образом, чтобы у заметки было обязательное свойство id типа Long NoteService теперь должен реализовывать интерфейс:

interface NoteService {
    /**
    * Если id == 0, создаёт новую, если id равен существующей заметке, сохраняет
    * В случае, если указан некорректный id, выбрасывает IllegalArgumentException
    * При обновлении updatedAt должно заполняться текущим временем
    * @throws IllegalArgumentException
     */
    fun save(note: Note): Note
    /**
    * Возвращает копию внутреннего списка
     */
    fun getAll(): List<Note>
    /**
    * Возвращает список текстов без повторов
     */
    fun getAllUniqueTexts(): List<String>
    /**
    * Возвращает несколько заметок старше указанного id
    * @param count – сколько заметок отсчитать
    * @param id - относительно какого элемента отсчитывать
     */
    fun getBefore(count: Int, id: Long): List<Note>
    /**
    * Возвращает несколько заметок новее указанного id
    * @param count – сколько заметок отсчитать
    * @param id - относительно какого элемента отсчитывать
     */
    fun getAfter(count: Int, id: Long)
}

Если ваш сервис называется NoteService, то сначала переименуйте его в NoteServiceImpl, а затем добавьте интерфейс NoteService.

Обратите внимание на пагинацию. Такой способ больше подходит для соцсетей и подобных приложений, где списки могут расти и часто обновляться.
Возможно вам в решении поможет экстеншен-функция dropWhile и/или dropLastWhile, но это не точно.

Обязательно протестируете ваше решение. Заполните сервис тестовыми данными и вызовите getBefore, getAfter.

Конвейеры
0 успешных
0 с ошибкой