Коллекция
Последнее обновление | Стабильный выпуск | Кандидат на выпуск | Бета-версия | Альфа-релиз |
---|---|---|---|---|
2 октября 2024 г. | 1.4.4 | - | - | 1.5.0-альфа03 |
Объявление зависимостей
Чтобы добавить зависимость от Collection, вы должны добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .
Добавьте зависимости для нужных вам артефактов в файл build.gradle
для вашего приложения или модуля:
классный
dependencies { def collection_version = "1.4.4" implementation "androidx.collection:collection:$collection_version" }
Котлин
dependencies { val collection_version = "1.4.4" implementation("androidx.collection:collection:$collection_version") }
Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.
Дополнительную информацию см . в документации по системе отслеживания проблем .
Версия 1.5
Версия 1.5.0-альфа03
2 октября 2024 г.
Выпущен androidx.collection:collection-*:1.5.0-alpha03
. Версия 1.5.0-alpha03 содержит эти коммиты .
Изменения API
- Обновление версии Kotlin до 1.9 ( I1a14c )
Внешний вклад
- Переслать
contains
наcontainsKey
. Спасибо, Джейк Уортон! ( I9362b ) - Добавьте построители контейнеров для коллекций, специализирующихся на скалярах. Спасибо, Джейк Уортон! ( I13179 )
Версия 1.5.0-альфа02
18 сентября 2024 г.
Выпущен androidx.collection:collection-*:1.5.0-alpha02
. Версия 1.5.0-alpha02 содержит эти коммиты .
Изменения API
- Добавляет поддержку целевой платформы
watchosDeviceArm64
. ( I1cc04 , б/364652024 )
Версия 1.5.0-альфа01
4 сентября 2024 г.
Выпущен androidx.collection:collection-*:1.5.0-alpha01
. Версия 1.5.0-alpha01 содержит эти коммиты .
Изменения API
-
OrderedScatterSet
— это новая упорядоченная коллекция без выделения ( Ic4178 ). -
SieveCache
— это новая заменаLruCache
без выделения памяти, которая предлагает лучшие характеристики коэффициента попадания. ( I50a17 ) - Открыто внутреннее представление
packedValue
дляIntIntPair
иFloatFloatPair
. ( Ифеб75 , б/331853566 ) - Добавление доступа к массиву контента в коллекциях списков. ( I899d5 , б/333903173 )
- Добавьте
DoubleList
— структуру данных в виде списка, оптимизированную для значений Double. ( Я10д1 , б/315127635 )
Исправления ошибок
- Библиотека коллекций переходит на Kotlin 1.9 ( I0782f )
- Оптимизируйте многие коллекции, чтобы они были более эффективными. ( Ic0566 )
Версия 1.4
Версия 1.4.4
18 сентября 2024 г.
Выпущен androidx.collection:collection-*:1.4.4
. Версия 1.4.4 содержит эти коммиты .
Исправления ошибок
- Обходной путь
ArrayIndexOutOfBounds
при сортировке пустой коллекции. ( I65245 )
Версия 1.4.3
7 августа 2024 г.
Выпущен androidx.collection:collection-*:1.4.3
. Версия 1.4.3 содержит эти коммиты .
Исправления ошибок
- Исправлено повреждение, которое могло произойти в
ScatterMap
,ScatterSet
и их примитивных вариантах. ( I38a4a , б / 352560465 ) - Оптимизация производительности. В частности:
- Замените вызовы
check()
иrequired()
вариантами, которые не вызывают встроенных исключений. Это уменьшает окончательный размер двоичного файла и, что более важно, немного снижает нагрузку на i-кэш. - Улучшен
removeDeletedMarkers()
в семействе коллекций scatter. Новая версия очищает удаленные маркеры по 8 маркеров за раз и пропускает более дорогостоящие операции записи. ( Ic0566 )
- Замените вызовы
Версия 1.4.2
24 июля 2024 г.
Выпущен androidx.collection:collection-*:1.4.2
. Версия 1.4.2 содержит эти коммиты .
Новые возможности
- Включает дополнительные мультиплатформенные цели Kotlin:
watchos
,tvos
,linuxArm64
. ( б/352543988 )
Версия 1.4.1
10 июля 2024 г.
androidx.collection:collection-*:1.4.1
выпущен. Версия 1.4.1 содержит эти коммиты .
Исправления ошибок
- Удалить удаленные надгробия с карты/набора при изменении размера. ( 7a996c5 , б/345960092 )
Версия 1.4.0
24 января 2024 г.
Выпущен androidx.collection:collection-*:1.4.0
. Версия 1.4.0 содержит эти коммиты.
Важные изменения с версии 1.3.0
Добавлены новые высокопроизводительные коллекции для хранения примитивов без упаковки:
-
MutableScatterMap
иScatterMap
— классы сMutableMap
и Map-подобным API -
MutableScatterSet
иScatterSet
— классы сMutableSet
и Set-подобным API -
MutableObjectList
иObjectList
— классы сMutableList
и API, похожим на список
Например, карта с целочисленным ключом и значением ссылочного типа — это IntObjectMap<T>
. Карта с длинным ключом и значением с плавающей запятой — это LongFloatMap
. Версии с именем ObjectObjectMap
не существует, поскольку она покрывается ScatterMap/MutableScatterMap
.
Версия 1.4.0-rc01
10 января 2024 г.
androidx.collection:collection-*:1.4.0-rc01
выпущен без изменений. Версия 1.4.0-rc01 содержит эти коммиты.
Версия 1.4.0-бета02
29 ноября 2023 г.
Выпущен androidx.collection:collection-*:1.4.0-beta02
. Версия 1.4.0-beta02 содержит эти коммиты.
Новые возможности
- Улучшена производительность
FloatFloatPair
. ( Если5537 )
Исправления ошибок
- Итератор
ScatterMap.asMap()
теперь возвращает новые экземпляры ( I28932 , b/310365754 ).
Версия 1.4.0-бета01
15 ноября 2023 г.
androidx.collection:collection-*:1.4.0-beta01
выпущен. Версия 1.4.0-beta01 содержит эти коммиты.
Исправления ошибок
- Исправлена ошибка, из-за которой
ListIterator
неправильно устанавливал значения вObjectList
, что могло привести к сбою из-заIndexOutOfBoundsException
. ( I3bd8a , б/307049391 )
Версия 1.4.0-альфа02
18 октября 2023 г.
Выпущен androidx.collection:collection-*:1.4.0-alpha02
. Версия 1.4.0-alpha02 содержит эти коммиты.
Изменения API
- Добавлена перегрузка для
put
, которая возвращает предыдущее значение при его замене во всех примитивных коллекциях, таких какFloatFloatMap
. - Преобразуйте методы
removeIf
в примитивных коллекциях, таких какMutableFloatFloatMap
во встроенные. Это гарантирует, что лямбда дляremoveIf
не будет выделена.
Версия 1.4.0-альфа01
4 октября 2023 г.
Выпущен androidx.collection:collection-*:1.4.0-alpha01
. Версия 1.4.0-alpha01 содержит эти коммиты.
Новые возможности
Были добавлены новые высокоэффективные коллекции с низкими накладными расходами и высокой производительностью:
-
MutableScatterMap
иScatterMap
— классы сMutableMap
и Map-подобным API -
MutableScatterSet
иScatterSet
— классы сMutableSet
и Set-подобным API -
MutableObjectList
иObjectList
— классы сMutableList
и API, похожим на список
Добавлены новые высокопроизводительные коллекции для хранения примитивов без упаковки:
-
Mutable[Int|Float|Long]List
— классы с API, подобнымMutableList<Int|Float|Long>
. Также существует[Int|Float|Long]List
только для чтения. Например, целые числа могут храниться вIntList
. -
Mutable[Int|Float|Long]Set
— классы с API, подобнымMutableSet<Int|Float|Long>
. Также существует[Int|Float|Long]Set
доступный только для чтения. Например, целые числа могут храниться в IntSet. -
Mutable[Int|Float|Long|Object][Int|Float|Long|Object]Map
— классы сMutable<Int|Float|Long,T, Int|Float|Long|T>
-подобным API. Также существует доступная только для чтения[Int|Float|Long|Object][Int|Float|Long|Object]Map
. Например, карта с целочисленным ключом и значением ссылочного типа — этоIntObjectMap<T>
. Карта с длинным ключом и значением с плавающей запятой — этоLongFloatMap
. Версии с именемObjectObjectMap
не существует, поскольку она покрываетсяScatterMap/MutableScatterMap
.
Версия 1.3.0
Версия 1.3.0
4 октября 2023 г.
Выпущен androidx.collection:collection-*:1.3.0
. Версия 1.3.0 содержит эти коммиты.
Важные изменения с версии 1.2.0
- Теперь вы можете использовать коллекции в мультиплатформенных проектах Kotlin. Обратите внимание, что целевые версии коллекций, отличные от Android, все еще находятся в экспериментальной стадии, но мы решили объединить версии, чтобы разработчикам было легче их опробовать.
- Весь исходный код перенесен на Kotlin. В рамках этого изменения многие API теперь корректно типизированы для недействительности, а некоторые частные члены пакета стали
internal
. Список точных изменений доступен в примечаниях к выпуску 1.3.x ниже. - Вместе с миграцией Kotlin
collection-ktx
была объединена с основным артефактом коллекции. Вы можете безопасно отказаться от любых зависимостей отcollection:collection-ktx
в пользуcollection:collection
посколькуcollection-ktx
теперь пуста.
Версия 1.3.0-rc01
6 сентября 2023 г.
androidx.collection:collection-*:1.3.0-rc01
выпущен без изменений. Версия 1.3.0-rc01 содержит эти коммиты.
Версия 1.3.0-бета01
9 августа 2023 г.
Выпущен androidx.collection:collection-*:1.3.0-beta01
. Версия 1.3.0-beta01 содержит эти коммиты.
Версия 1.3.0-альфа04
24 марта 2023 г.
Выпущен androidx.collection:collection-*:1.3.0-alpha04
.
Исправления ошибок
- Удалены ограничения зависимостей из артефактов Maven для обхода проблемы сборки в Kotlin Native Targets ( b/274786186 , KT-57531 ).
Версия 1.3.0-альфа03
22 марта 2023 г.
androidx.collection:collection-*:1.3.0-alpha03
выпущен. Версия 1.3.0-alpha03 содержит эти коммиты.
Новые возможности
- Теперь вы можете использовать коллекции в проектах KMM . Обратите внимание, что цели Коллекций, отличные от Android, все еще находятся в экспериментальном режиме, но мы решили объединить версии, чтобы разработчикам было легче их опробовать.
Изменения API
-
ArraySet
теперь реализуетMutableCollections
вместоAbstractMutableCollection
, чтобы обеспечить более эффективную реализациюtoArray
( I1ac32 ) с использованием памяти.
Исправления ошибок
-
ArraySet.toArray
теперь доступен только в JVM, поскольку он всегда был включен только для совместимости с Java. Пользователям Kotlin вместо этого обычно следует использовать хелперы.toTypedArray
из stdlib, которые обеспечивают ту же функциональность с дополнительной безопасностью типов. ( I2c59b )
Версия 1.3.0-альфа02
27 июля 2022 г.
Выпущены androidx.collection:collection:1.3.0-alpha02
и androidx.collection:collection-ktx:1.3.0-alpha02
. Версия 1.3.0-alpha02 содержит эти коммиты.
Изменения API
-
SparseArrayCompat
теперь доступен для платформ, отличных от JVM, из общего артефакта ( Ic9bd0 , b/219589118 , b/228347315 ). -
CircularIntArray
теперь доступен для платформ, отличных от JVM, из общего артефакта ( I3d8ef , b/228344943 ). -
LongSparseArray
теперь доступен для платформ, отличных от JVM, из общего артефакта ( I73149 , b/228347315 ).
Версия 1.3.0-альфа01
29 июня 2022 г.
Выпущены androidx.collection:collection:1.3.0-alpha01
и androidx.collection:collection-ktx:1.3.0-alpha01
. Версия 1.3.0-alpha01 содержит эти коммиты.
Новые возможности
- Расширения
collection-ktx
были перенесены в основной артефакт коллекцийandroidx.collection:collection
. Это изменение делает уже существующие расширения -ktx доступными для пользователей Kotlin без необходимости использования зависимости -ktx, сохраняя при этом совместимость для существующих пользователей. Хранение этих расширений в отдельном артефакте -ktx больше не имеет смысла, поскольку основной артефакт переехал в Kotlin. ( I6eef2 )
Изменения API
-
ArraySet
теперь расширяетAbstractMutableCollection
и больше не реализует интерфейс Collection напрямую. ( If6da0 , b/230860589 ) -
ArraySet
преобразован в Kotlin. Из-за более строгой типизации некоторые вызовы Kotlin могут больше не компилироваться. ( Id68c1 , б/230860589 )- Следующие вызовы имеют тип аргумента
T
, а неT?
:-
ArraySet<T>.contains(null)
-
ArraySet<T>.add(null)
-
ArraySet<T>.remove(null)
-
- Следующие вызовы имеют тип возврата
T?
, а неT!
:-
ArraySet<T?>.valueAt(n)
-
ArraySet<T?>.removeAt(n)
-
ArraySet<T?>().iterator().next()
-
- Следующие вызовы из Kotlin больше невозможны:
-
set.toArray()
— используйтеset.toTypedArray()
-
set.toArray(array)
- используйтеset.forEachIndexed(array::set)
-
- Следующие вызовы имеют тип аргумента
- Объедините перегруженный конструктор для
SparseArrayCompat
в качестве необязательного аргумента для пользователей Kotlin. ( Если8407 , б/227474719 ) - Удалить синтаксис оператора для
SparseArrayCompat.get(key, defaultValue).
Обратите внимание, что это по-прежнему допускает синтаксис оператора для.get(key)
, но лучше выравнивает поверхность APISparseArrayCompat
с другими классами в этой библиотеке. ( I9a38d ) - Перенесите расширения
LongSparseArray
в основной артефакт androidx.collection:collection. Это изменение делает уже существующие расширения -ktx доступными для пользователей Kotlin без необходимости использования зависимости -ktx, сохраняя при этом совместимость для существующих пользователей. Хранение этих расширений в отдельном артефакте -ktx больше не имеет смысла, поскольку основной артефакт переехал в Kotlin. ( I8659a ) - Преобразуйте
LongSparseArray
в Kotlin. Это изменение добавляет явное нулевое значение к его типам, что является бинарно-совместимым изменением, но может привести к несовместимости исходного кода. В частности: *.isEmpty
больше не доступен как свойство, доступ к нему должен осуществляться как вызов функции в Kotlin —.isEmpty()
( Idfd0f ). - Преобразование
SimpleArrayMap
в Kotlin. Это изменение вносит несколько несовместимых изменений в результате взаимодействия Java-Kotlin и возможности правильно определять недействительность типов в исходном коде.- Частные API пакета,
.mSize
,.mArray
,.mHashes
,.indexOf()
,.indexOfNull()
и.indexOfValue()
, были сделаны частными — технически это бинарно несовместимое изменение, но оно отражает предполагаемую видимость этих полей. и это самое близкое, чего мы можем достичь в Kotlin, поскольку он не включает в себя способ указать видимость для частного пакета. - Недействительность некоторых типов теперь правильно определена, затронуты следующие методы:
.getOrDefault
,.keyAt
,.valueAt
,.setValueAt
,.put
,.putIfAbsent
,.removeAt
,.replace
. - Для пользователей Kotlin
.isEmpty()
теперь доступен только как функция, а не через доступ к свойствам. ( I271b7 , б/182813986 )
- Частные API пакета,
Преобразование
CircularArray
в Kotlin. Заметные изменения:- Исправляет ненулевое значение своих дженериков, чтобы оно было ненулевым, что раньше было невозможно объявить, но оно применялось во всех его общедоступных API.
- Благодаря взаимодействию Kotlin с Java ранее к определенным методам можно было получить доступ как к свойствам, так и к функциям. Однако, чтобы уменьшить дублирование и сохранить двоичную совместимость, их пришлось удалить, что является изменением, несовместимым с исходным кодом. Затронутые вызовы:
.isEmpty
,.getLast()
и.getFirst()
. ( Иффак )
Преобразуйте
CircularIntArray
в Kotlin. Благодаря взаимодействию Kotlin с Java ранее к определенным методам можно было получить доступ как к свойствам, так и к функциям. Однако, чтобы уменьшить дублирование и сохранить двоичную совместимость, их пришлось удалить, что является изменением, несовместимым с исходным кодом. Затронутые вызовы:.isEmpty
,.getLast()
и.getFirst()
. ( Ie36ce )Преобразование
LruCache
в Kotlin ( Ia2f19 )Преобразуйте
SparseArrayCompat
в Kotlin. ( If6fe8 )Небольшое изменение поведения добавлено в
SparseArrayCompat.valueAt()
, который больше не возвращает ошибочноnull
для неинициализированных вызовов, выходящих за пределыsize()
но в пределах предоставленной начальной емкости.Это изменение также вводит правильную недействительность для некоторых типов, которая ранее отсутствовала.
-
.get(): E?
->.get(): E
-
.replace(Int, Int?): Int?
->.replace(Int, Int): Int?
-
.replace(Int, Int?, Int?): Boolean
->.replace(Int, Int, Int): Boolean
-
.put(Int, Int?)
->.put(Int, Int)
-
.putIfAbsent(Int, Int?): Int?
->.putIfAbsent(Int, Int): Int?
-
.setValueAt(index: Int, value: Int?)
->.setValueAt(index: Int, value: Int)
-
.indexOfValue(value: Int?): Int
->.indexOfValue(value: Int): Int
-
.containsValue(value: Int?): Boolean
->.containsValue(value: Int): Boolean
-
.append(key: Int, value: Int?)
->.append(key: Int, value: Int)
-
Версия 1.2.0
Версия 1.2.0
1 декабря 2021 г.
Выпущены androidx.collection:collection:1.2.0
и androidx.collection:collection-ktx:1.2.0
. Версия 1.2.0 содержит эти коммиты.
Важные изменения с версии 1.1.0
- Добавьте конструктор массива в
ArraySet
. ( ID7f19 ) - Сделайте
entrySet()
совместимым с API, реализовавentrySet().toArray()
,remove()
,removeAll()
иretainAll()
и удалив реализациюentrySet().addAll()
( I5d505 ).
Версия 1.2.0-rc01
17 ноября 2021 г.
Выпущены androidx.collection:collection:1.2.0-rc01
и androidx.collection:collection-ktx:1.2.0-rc01
. Версия 1.2.0-rc01 содержит эти коммиты.
Изменения API
- Никаких изменений по сравнению с предыдущей бета-версией.
Версия 1.2.0-бета01
13 октября 2021 г.
Выпущены androidx.collection:collection:1.2.0-beta01
и androidx.collection:collection-ktx:1.2.0-beta01
. Версия 1.2.0-beta01 содержит эти коммиты.
Исправления ошибок
- Сделайте
entrySet()
совместимым с API, реализовавentrySet().toArray()
,remove()
,removeAll()
иretainAll()
и удалив реализациюentrySet().addAll()
( I5d505 ).
Версия 1.2.0-альфа01
16 декабря 2020 г.
Выпущены androidx.collection:collection:1.2.0-alpha01
и androidx.collection:collection-ktx:1.2.0-alpha01
. Версия 1.2.0-alpha01 содержит эти коммиты.
Изменения API
- Добавьте конструктор массива в
ArraySet
. ( ID7f19 )
Версия 1.1.0
Версия 1.1.0
5 июня 2019 г.
Выпущены androidx.collection:collection:1.1.0
и androidx.collection:collection-ktx:1.1.0
. Коммиты, включенные в 1.1.0, можно найти здесь .
Ниже приведен краткий обзор изменений с 1.0.0 по 1.1.0:
Новые возможности
- Используйте более эффективную реализацию функций
contains
иisNotEmpty
в артефакте «collection-ktx». ( аосп/866529 )
Изменения API
- Добавьте
putIfAbsent
вLongSparseArray
,SimpleArrayMap
иSparseArrayCompat
( aosp/772608 ). - Добавьте
getOrDefault
вSimpleArrayMap
( aosp/772607 ) - Добавьте
remove
с двумя аргументами вLongSparseArray
,SimpleArrayMap
иSparseArrayCompat
. Устаревшие соответствующие расширения KTX для этой функции. ( аосп/772482 ) - Добавьте
replace
с двумя аргументами вLongSparseArray
,SimpleArrayMap
иSparseArrayCompat
( aosp/772483 ). - Добавьте
replace
с тремя аргументами вLongSparseArray
,SimpleArrayMap
иSparseArrayCompat
( aosp/772484 ). - Устаревшие избыточные методы
delete
. Методremove
предлагает тот же API и функциональность и соответствует API, используемому неспециализированными Картами. ( аосп/866053 )
Исправления ошибок
- Измените
SimpleArrayMap
, чтобы синхронизировать внутренний глобальный кэш массивов сSimpleArrayMap.class
вместоArrayMap.class
. Это гарантирует, что если вы используете толькоSimpleArrayMap
,ArrayMap
можно будет удалить с помощью инструментов сжатия кода. ( аосп/934557 )
Версия 1.1.0-rc01
7 мая 2019 г.
androidx.collection:collection:1.1.0-rc01
и androidx.collection:collection-ktx:1.1.0-rc01
выпущены. Коммиты, включенные в эту версию, можно найти здесь .
Новые возможности
- Используйте более эффективную реализацию функций
contains
иisNotEmpty
в артефакте «collection-ktx». ( аосп/866529 )
Версия 1.1.0-бета01
3 апреля 2019 г.
Выпущены androidx.collection:collection:1.1.0-beta01
и androidx.collection:collection-ktx:1.1.0-beta01
. Коммиты, включенные в эту версию, можно найти здесь .
Изменения API
- Метод, упомянутый в примечаниях к выпуску Alpha03 с измененным значением
@RestrictTo
, был удален. Он не использовался ни одной библиотекой AndroidX (сейчас или исторически) и не предлагал каких-либо функций, отсутствующих в общедоступном API.
Исправления ошибок
- Измените
SimpleArrayMap
, чтобы синхронизировать внутренний глобальный кэш массивов сSimpleArrayMap.class
вместоArrayMap.class
. Это гарантирует, что если вы используете толькоSimpleArrayMap
,ArrayMap
можно будет удалить с помощью инструментов сжатия кода. ( аосп/934557 )
Версия 1.1.0-альфа03
13 марта 2019 г.
Выпущены androidx.collection:collection:1.0.0-alpha03
и androidx.collection:collection-ktx:1.0.0-alpha03
. Полный список коммитов, включённых в эту версию, можно найти здесь .
Изменения API
- Метод в
ArraySet
ранее отмеченный@RestrictTo(LIBRARY_GROUP)
был изменен на@RestrictTo(LIBRARY_GROUP_PREFIX)
. Это сделано для поддержки исторического использования другими библиотеками AndroidX, которые теперь имеют разные идентификаторы групп Maven. Этот метод будет либо опубликован, либо удален в версии 1.1.0-alpha04, поскольку другие библиотеки AndroidX не должны получать специальные API, которых нет у других разработчиков.
Версия 1.1.0-альфа02
30 января 2019 г.
Выпущены androidx.collection:collection 1.1.0-alpha02
и androidx.collection:collection-ktx 1.1.0-alpha02
.
Изменения API
- Устаревшие избыточные методы
delete
. Методыremove
предлагают тот же API и функциональность и соответствуют API, используемому неспециализированными картами. ( аосп/866053 )
Версия 1.1.0-альфа01
3 декабря 2018 г.
Изменения API
- Добавьте
putIfAbsent
вLongSparseArray
,SimpleArrayMap
иSparseArrayCompat
( aosp/772608 ). - Добавьте
getOrDefault
вSimpleArrayMap
( aosp/772607 ) - Добавьте
remove
с двумя аргументами вLongSparseArray
,SimpleArrayMap
иSparseArrayCompat
. Устаревшие соответствующие расширения KTX для этой функции. ( аосп/772482 ) - Добавьте
replace
с двумя аргументами вLongSparseArray
,SimpleArrayMap
иSparseArrayCompat
( aosp/772483 ). - Добавьте
replace
с тремя аргументами вLongSparseArray
,SimpleArrayMap
иSparseArrayCompat
( aosp/772484 ).