Size: a a a

Kotlin Community

2021 January 08

AL

Alexander Levin in Kotlin Community
Denis Kalinochkin
Почему константное? Новый ArrayList создается
на sublist создаётся отображение исходного листа, не новый.
источник

AA

Andrey Antipov in Kotlin Community
Denis Kalinochkin
Почему константное? Новый ArrayList создается
Нет, там не ArrayList, там
    /**
    * Returns a view of the portion of this list between the specified
    * <tt>fromIndex</tt>, inclusive, and <tt>toIndex</tt>, exclusive.  (If
    * <tt>fromIndex</tt> and <tt>toIndex</tt> are equal, the returned list is
    * empty.)  The returned list is backed by this list, so non-structural
    * changes in the returned list are reflected in this list, and vice-versa.
    * The returned list supports all of the optional list operations supported
    * by this list.<p>
источник

AA

Andrey Antipov in Kotlin Community
Это цитата из JavaDoc 1.8
В KDoc 1.4 аналогично:
     * Returns a view of the portion of this list between the specified [fromIndex] (inclusive) and [toIndex] (exclusive).
    * The returned list is backed by this list, so non-structural changes in the returned list are reflected in this list, and vice-versa.
    *
    * Structural changes in the base list make the behavior of the view undefined.
источник

AA

Andrey Antipov in Kotlin Community
Так что никаких новых ArrayList там не создаётся
источник

AM

Andrew Mikhaylov in Kotlin Community
Andrey Antipov
А чем такая реализация плоха?
fun <T> List<T>.tail(): List<T> = subList(1, size)

Вроде за константное время должна быть
Да, я гоню, всё правильно вы говорите. Это, к примеру, x :: xs типичный для ФП, будет копирование делать.
источник

AA

Andrey Antipov in Kotlin Community
Andrew Mikhaylov
Да, я гоню, всё правильно вы говорите. Это, к примеру, x :: xs типичный для ФП, будет копирование делать.
Тут тоже не уверен. Зависит от реализации. В Kotlin такого оператора нет. Там где есть его реализуют за константное время.
источник

AL

Alexander Levin in Kotlin Community
Andrew Mikhaylov
Да, я гоню, всё правильно вы говорите. Это, к примеру, x :: xs типичный для ФП, будет копирование делать.
Обычно нет, если у тебя лист это ссылка на голову и хвостовой лист, то и добавить элемент в начало - это просто создать объект с новой головой и старым листом, и вытащить хвост это просто вытащить уже созданный лист.
источник

AM

Andrew Mikhaylov in Kotlin Community
Andrey Antipov
Тут тоже не уверен. Зависит от реализации. В Kotlin такого оператора нет. Там где есть его реализуют за константное время.
Оператора нет, а задача такое делать у человека будет. Потому будет обходиться тем, что есть.
источник

AM

Andrew Mikhaylov in Kotlin Community
Alexander Levin
Обычно нет, если у тебя лист это ссылка на голову и хвостовой лист, то и добавить элемент в начало - это просто создать объект с новой головой и старым листом, и вытащить хвост это просто вытащить уже созданный лист.
Ну если мы о линкедлисте, то да. Но у нас же по дефолту везде эррэйлисты.
источник

AL

Alexander Levin in Kotlin Community
Andrew Mikhaylov
Ну если мы о линкедлисте, то да. Но у нас же по дефолту везде эррэйлисты.
А, ну там, где такой оператор есть, обычно уже не так.
источник

L

LevT in Kotlin Community
Andrew Mikhaylov
Оператора нет, а задача такое делать у человека будет. Потому будет обходиться тем, что есть.
Ну да,
по крайней мере считаю важным сознательный - а не изподпалки обстоятельств - выбор:
  обходиться так, добавлять либы или всё-таки уходить.
источник

AA

Andrey Antipov in Kotlin Community
LevT
Ну да,
по крайней мере считаю важным сознательный - а не изподпалки обстоятельств - выбор:
  обходиться так, добавлять либы или всё-таки уходить.
Куда уходить? Из Kotlin? Потому, что там в стадартной библиотеке нету разделения списка на голову и хвост?
Так напишите, делов-то 2 строчки:
fun <T> List<T>.tail(): List<T> = subList(1, size)
fun <T> List<T>.headTail(): Pair<T, List<T>> = first() to tail()

И пример использования:
val xs = listOf(1, 2)
val (h, t) = xs.headTail()
источник

L

LevT in Kotlin Community
Andrey Antipov
Куда уходить? Из Kotlin? Потому, что там в стадартной библиотеке нету разделения списка на голову и хвост?
Так напишите, делов-то 2 строчки:
fun <T> List<T>.tail(): List<T> = subList(1, size)
fun <T> List<T>.headTail(): Pair<T, List<T>> = first() to tail()

И пример использования:
val xs = listOf(1, 2)
val (h, t) = xs.headTail()
Я не по конкретно этому поводу. Просто отметил, что @r4zzz4k меня понял
источник

L

LevT in Kotlin Community
Andrey Antipov
Куда уходить? Из Kotlin? Потому, что там в стадартной библиотеке нету разделения списка на голову и хвост?
Так напишите, делов-то 2 строчки:
fun <T> List<T>.tail(): List<T> = subList(1, size)
fun <T> List<T>.headTail(): Pair<T, List<T>> = first() to tail()

И пример использования:
val xs = listOf(1, 2)
val (h, t) = xs.headTail()
И кстати, это тоже внутри варианта "добавлять либы". Я не уточнял "чужие"
источник

AA

Andrey Antipov in Kotlin Community
LevT
Скала:  
ps.zip(ps.tail).count { case (a, b) => a > b }

Котлин:
xs zip xs.subList(1, xs.size).count { (a, b) -> a - b }

Как это второе грамотно подхинтовать от красноты?
Возвращаясь к сравнению Скала и Котлин:
Если определить tail как val <T> List<T>.tail: List<T> get() = subList(1, size), то на Котлин код будет выглядеть так:
xs.zip(xs.tail).count { (a, b) -> a > b }
источник

AV

Abdukarimov Vladisla... in Kotlin Community
Доброгоьвремени суток, подскажите пожалуйста с чего начать ? Хочу попробывать себя в разработке андроид пииложений. Знаний в it 0.
источник

QH

Quantum Harmonizer in Kotlin Community
Abdukarimov Vladislav
Доброгоьвремени суток, подскажите пожалуйста с чего начать ? Хочу попробывать себя в разработке андроид пииложений. Знаний в it 0.
С чтения FAQ из описания чата.
источник

AN

Alexander Nozik in Kotlin Community
Abdukarimov Vladislav
Доброгоьвремени суток, подскажите пожалуйста с чего начать ? Хочу попробывать себя в разработке андроид пииложений. Знаний в it 0.
И не начинайте пожалуйста с нуля в андроид. Потратьте месяца два (минимум) на освоение основных концепций.
источник

AV

Abdukarimov Vladisla... in Kotlin Community
Основные концепции? Простот прогуглить ?
источник

AV

Abdukarimov Vladisla... in Kotlin Community
Концепции языка kotlin ? Программрования ?
источник