Kolekcja
Najnowsza aktualizacja | Wersja stabilna | Kandydat do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
24 stycznia 2024 r. | 1.4.0 | - | - | - |
Deklarowanie zależności
Aby dodać zależność od kolekcji, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.
W pliku build.gradle
aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:
Odlotowy
dependencies { def collection_version = "1.4.0" implementation "androidx.collection:collection:$collection_version" }
Kotlin
dependencies { val collection_version = "1.4.0" implementation("androidx.collection:collection:$collection_version") }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.4
Wersja 1.4.0
24 stycznia 2024 r.
Aplikacja androidx.collection:collection-*:1.4.0
została zwolniona. Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.3.0
Dodaliśmy nowe, niezwykle wydajne kolekcje do przechowywania podstawowych elementów bez opakowania:
MutableScatterMap
iScatterMap
– zajęcia zMutableMap
i interfejsem API przypominającym mapęMutableScatterSet
iScatterSet
– zajęcia zMutableSet
i interfejsem API Set-likeMutableObjectList
iObjectList
– zajęcia zMutableList
i interfejsem API typu List-like
Na przykład mapa z kluczem liczby całkowitej i wartością typu odwołania to IntObjectMap<T>
. Mapa z długim kluczem i wartością zmiennoprzecinkową to LongFloatMap
. Nie ma wersji o nazwie ObjectObjectMap
, ponieważ jest ona objęta zasadą ScatterMap/MutableScatterMap
.
Wersja 1.4.0-rc01
10 stycznia 2024 r.
Aplikacja androidx.collection:collection-*:1.4.0-rc01
została wydana bez zmian. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Wersja 1.4.0-beta02
29 listopada 2023 r.
Aplikacja androidx.collection:collection-*:1.4.0-beta02
została zwolniona. Wersja 1.4.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
- Zwiększono wydajność aplikacji
FloatFloatPair
. (If5537)
Poprawki błędów
- iterator
ScatterMap.asMap()
zwraca teraz nowe instancje (I28932, b/310365754)
Wersja 1.4.0-beta01
15 listopada 2023 r.
Aplikacja androidx.collection:collection-*:1.4.0-beta01
została zwolniona. Wersja 1.4.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto nieprawidłowe ustawienia
ListIterator
w systemieObjectList
, które mogły doprowadzić do awarii z powodu błęduIndexOutOfBoundsException
. (I3bd8a, b/307049391)
Wersja 1.4.0-alfa02
18 października 2023 r.
Aplikacja androidx.collection:collection-*:1.4.0-alpha02
została zwolniona. Wersja 1.4.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano przeciążenie dla funkcji
put
, które zwraca poprzednią wartość po zastąpieniu jej wszystkimi zbiorami podstawowymi, np.FloatFloatMap
. - Przekonwertuj metody
removeIf
w kolekcjach podstawowych, takich jakMutableFloatFloatMap
, na metody wbudowane. Zapewnia to, że funkcja lambda dla funkcjiremoveIf
nie jest przydzielona.
Wersja 1.4.0-alfa01
4 października 2023 r.
Aplikacja androidx.collection:collection-*:1.4.0-alpha01
została zwolniona. Wersja 1.4.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
Dodaliśmy nowe kolekcje o wysokiej wydajności, które mają niski koszt alokacji i wysoką wydajność:
MutableScatterMap
iScatterMap
– zajęcia zMutableMap
i interfejsem API przypominającym mapęMutableScatterSet
iScatterSet
– zajęcia zMutableSet
i interfejsem API Set-likeMutableObjectList
iObjectList
– zajęcia zMutableList
i interfejsem API typu List-like
Dodaliśmy nowe, niezwykle wydajne kolekcje do przechowywania podstawowych elementów bez opakowania:
Mutable[Int|Float|Long]List
– zajęcia z interfejsem API podobnym doMutableList<Int|Float|Long>
. Istnieje też zasób[Int|Float|Long]List
tylko do odczytu. Liczby całkowite można na przykład przechowywać w elemencieIntList
.Mutable[Int|Float|Long]Set
– zajęcia z interfejsem API podobnym doMutableSet<Int|Float|Long>
. Istnieje też zasób[Int|Float|Long]Set
tylko do odczytu. Na przykład liczby całkowite mogą być przechowywane w elemencie IntSet.Mutable[Int|Float|Long|Object][Int|Float|Long|Object]Map
– zajęcia z interfejsem API podobnym doMutable<Int|Float|Long,T, Int|Float|Long|T>
. Istnieje też zasób[Int|Float|Long|Object][Int|Float|Long|Object]Map
tylko do odczytu. Na przykład mapa z kluczem liczby całkowitej i wartością typu odwołania toIntObjectMap<T>
. Mapa z długim kluczem i wartością zmiennoprzecinkową toLongFloatMap
. Nie ma wersji o nazwieObjectObjectMap
, ponieważ jest ona objęta zasadąScatterMap/MutableScatterMap
.
Wersja 1.3.0
Wersja 1.3.0
4 października 2023 r.
Aplikacja androidx.collection:collection-*:1.3.0
została zwolniona. Wersja 1.3.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.2.0
- Możesz teraz używać kolekcji w projektach wieloplatformowych Kotlin. Pamiętaj, że elementy docelowe kolekcji inne niż Android są nadal w fazie eksperymentalnej, ale zdecydowaliśmy się scalić wersje, by ułatwić deweloperom ich testowanie.
- Całe źródło zostało przeniesione do Kotlin. W wyniku tej zmiany wiele interfejsów API ma teraz prawidłowo wpisane nazwy nieokreślone, a kilka prywatnych elementów pakietu jest teraz
internal
. Lista dokładnych zmian jest dostępna w poniższych informacjach o wersji 1.3.x. - Wraz z migracją Kotlin aplikacja
collection-ktx
została scalona z głównym artefaktem kolekcji. Możesz bezpiecznie usunąć wszelkie zależności odcollection:collection-ktx
na rzeczcollection:collection
, ponieważcollection-ktx
jest teraz puste.
Wersja 1.3.0-rc01
6 września 2023 r.
Aplikacja androidx.collection:collection-*:1.3.0-rc01
została wydana bez zmian. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.
Wersja 1.3.0-beta01
9 sierpnia 2023 r.
Aplikacja androidx.collection:collection-*:1.3.0-beta01
została zwolniona. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Wersja 1.3.0-alfa04
24 marca 2023 r.
Aplikacja androidx.collection:collection-*:1.3.0-alpha04
została zwolniona.
Poprawki błędów
- Usunięto ograniczenia zależności z artefaktów Maven, aby obejść problem z kompilacją w natywnych celach Kotlin (b/274786186, KT-57531).
Wersja 1.3.0-alfa03
22 marca 2023 r.
Aplikacja androidx.collection:collection-*:1.3.0-alpha03
została zwolniona. Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Możesz teraz używać kolekcji w projektach KMM. Pamiętaj, że elementy docelowe kolekcji inne niż Android są nadal w fazie eksperymentalnej, ale zdecydowaliśmy się scalić wersje, by ułatwić deweloperom ich testowanie.
Zmiany w interfejsie API
ArraySet
korzysta teraz z interfejsuMutableCollections
zamiastAbstractMutableCollection
, co pozwala na bardziej wydajne użycie pamięci implementacjitoArray
(I1ac32)
Poprawki błędów
- Język
ArraySet.toArray
jest teraz dostępny tylko w JVM, ponieważ zawsze był uwzględniany wyłącznie na potrzeby zgodności z Javą. Użytkownicy Kotlin powinni ogólnie używać elementów pomocniczych.toTypedArray
biblioteki stdlib, które mają tę samą funkcję i dodatkowe bezpieczeństwo. (I2c59b)
Wersja 1.3.0-alfa02
27 lipca 2022 roku
Opublikowano androidx.collection:collection:1.3.0-alpha02
i androidx.collection:collection-ktx:1.3.0-alpha02
. Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
SparseArrayCompat
jest teraz dostępny dla platform innych niż JVM ze wspólnego artefaktu (Ic9bd0, b/219589118, b/228347315)CircularIntArray
jest teraz dostępny dla platform innych niż JVM ze wspólnego artefaktu (I3d8ef, b/228344943)LongSparseArray
jest teraz dostępny dla platform innych niż jvm ze wspólnego artefaktu (I73149, b/228347315)
Wersja 1.3.0-alfa01
29 czerwca 2022 r.
Opublikowano androidx.collection:collection:1.3.0-alpha01
i androidx.collection:collection-ktx:1.3.0-alpha01
. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
collection-ktx
rozszerzenia zostały przeniesione do głównego artefaktu kolekcjiandroidx.collection:collection
. Ta zmiana sprawia, że istniejące rozszerzenia -ktx są dostępne dla użytkowników Kotlin bez konieczności użycia zależności -ktx przy zachowaniu zgodności dla istniejących użytkowników. Przechowywanie tych rozszerzeń w osobnym artefaktie -ktx nie jest już korzystne, ponieważ główny artefakt został przeniesiony do Kotlin. (I6eef2)
Zmiany w interfejsie API
- Rozszerzenie
ArraySet
zawiera teraz rozszerzenieAbstractMutableCollection
i nie implementuje już bezpośrednio interfejsu kolekcji. (If6da0, b/230860589) - Przekonwertowano:
ArraySet
na Kotlin. Ze względu na bardziej rygorystyczne warunki pisania niektóre wywołania Kotlin mogą przestać się kompilować. (Id68c1, b/230860589)- Te wywołania mają typ argumentu
T
, a nieT?
:ArraySet<T>.contains(null)
ArraySet<T>.add(null)
ArraySet<T>.remove(null)
- Te wywołania mają zwracany typ
T?
, a nieT!
:ArraySet<T?>.valueAt(n)
ArraySet<T?>.removeAt(n)
ArraySet<T?>().iterator().next()
- W narzędziu Kotlin nie można już wykonywać tych wywołań:
set.toArray()
– użyjset.toTypedArray()
set.toArray(array)
– użyjset.forEachIndexed(array::set)
- Te wywołania mają typ argumentu
- Połącz przeciążony konstruktor dla
SparseArrayCompat
jako opcjonalny argument dla użytkowników Kotlin. (If8407, b/227474719) - Usuń składnię operatora dla funkcji
SparseArrayCompat.get(key, defaultValue).
. Nadal umożliwia to składnię operatorów w.get(key)
, ale pozwala lepiej dopasować platformę interfejsu APISparseArrayCompat
do innych klas w tej bibliotece. (I9a38d) - Przenieś rozszerzenia
LongSparseArray
do głównego artefaktu, androidx.collection:collection. Ta zmiana sprawia, że istniejące rozszerzenia -ktx są dostępne dla użytkowników Kotlin bez konieczności użycia zależności -ktx przy zachowaniu zgodności dla istniejących użytkowników. Przechowywanie tych rozszerzeń w osobnym artefaktie -ktx nie jest już korzystne, ponieważ główny artefakt został przeniesiony do Kotlin. (I8659a) - Konwertuj
LongSparseArray
na Kotlin. Ta zmiana dodaje do typów jawną wartość null (jest to zmiana zgodna z systemem binarnym), ale może powodować niezgodność źródła. W szczególności: * Usługa.isEmpty
nie jest już dostępna jako usługa i trzeba uzyskać do niej dostęp jako wywołanie funkcji w Kotlin –.isEmpty()
(Idfd0f). - Konwertuj
SimpleArrayMap
na Kotlin. Ta zmiana wprowadza kilka niezgodnych zmian ze względu na interoperacyjność z językiem Java-Kotlin i możliwość poprawnego definiowania null typów w źródle.- Prywatne interfejsy API pakietu (
.mSize
,.mArray
,.mHashes
,.indexOf()
,.indexOfNull()
i.indexOfValue()
) zostały ustawione jako prywatne – z technicznego punktu widzenia jest to niekompatybilna zmiana, ale odzwierciedla zamierzoną widoczność tych pól i jest najbliższa możliwa do uzyskania w Kotlin, ponieważ nie zawiera sposobu określania widoczności prywatnego pakietu. - Wartość null niektórych typów jest teraz prawidłowo zdefiniowana. Metody, których dotyczy problem, to:
.getOrDefault
,.keyAt
,.valueAt
,.setValueAt
,.put
,.putIfAbsent
,.removeAt
,.replace
. - Dla użytkowników Kotlin usługa
.isEmpty()
jest teraz dostępna tylko jako funkcja, a nie przez dostęp do usługi. (I271b7, b/182813986)
- Prywatne interfejsy API pakietu (
Konwertuj
CircularArray
na Kotlin. Ważne zmiany:- Poprawia wartość null nazw ogólnych na niezerową, której wcześniej nie można było zadeklarować, ale było egzekwowane we wszystkich publicznych interfejsach API.
- Dzięki interoperacyjności Kotlina w Javie wcześniej można było uzyskać dostęp do niektórych metod jako właściwości lub funkcji. Aby zmniejszyć liczbę duplikatów przy zachowaniu zgodności plików binarnych, należało usunąć te elementy, co jest zmianą niekompatybilną ze źródłem. Dotyczy to tych wywołań:
.isEmpty
,.getLast()
i.getFirst()
. (Ifffac)
Konwertuj
CircularIntArray
na Kotlin. Dzięki interoperacyjności Kotlin w Javie wcześniej można było uzyskać dostęp do określonych metod jako właściwości lub funkcji. Aby zmniejszyć liczbę duplikatów przy zachowaniu zgodności plików binarnych, należało usunąć te elementy, co jest zmianą niekompatybilną ze źródłem. Dotyczy to połączeń:.isEmpty
,.getLast()
i.getFirst()
. (Ie36ce)Konwertuj
LruCache
na Kotlin (Ia2f19)Konwertuj
SparseArrayCompat
na Kotlin. (If6fe8)Wprowadzono niewielką zmianę działania w funkcji
SparseArrayCompat.valueAt()
, która już nie zwraca nieprawidłowo wartościnull
w przypadku niezainicjowanych wywołań spoza zakresusize()
, ale mieszczących się w podanej początkowej pojemności.Ta zmiana wprowadza też prawidłową wartość null dla niektórych typów, których wcześniej brakowało.
.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)
Wersja 1.2.0
Wersja 1.2.0
Grudzień 1, 2021
Opublikowano androidx.collection:collection:1.2.0
i androidx.collection:collection-ktx:1.2.0
. Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
- Dodaj konstruktor tablicowy do elementu
ArraySet
. (Id7f19). - Zadbaj o zgodność z interfejsem API
entrySet()
, implementującentrySet().toArray()
,remove()
,removeAll()
iretainAll()
oraz usuwając implementacjęentrySet().addAll()
(I5d505)
Wersja 1.2.0-rc01
17 listopada 2021 r.
Opublikowano androidx.collection:collection:1.2.0-rc01
i androidx.collection:collection-ktx:1.2.0-rc01
. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Brak zmian w stosunku do poprzedniej wersji beta.
Wersja 1.2.0-beta01
13 października 2021 r.
Opublikowano androidx.collection:collection:1.2.0-beta01
i androidx.collection:collection-ktx:1.2.0-beta01
. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Zadbaj o zgodność z interfejsem API
entrySet()
, implementującentrySet().toArray()
,remove()
,removeAll()
iretainAll()
oraz usuwając implementacjęentrySet().addAll()
(I5d505)
Wersja 1.2.0-alfa01
16 grudnia 2020 roku
Opublikowano androidx.collection:collection:1.2.0-alpha01
i androidx.collection:collection-ktx:1.2.0-alpha01
. Wersja 1.2.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj konstruktor tablicowy do elementu
ArraySet
. (Id7f19).
Wersja 1.1.0
Wersja 1.1.0
5 czerwca 2019 r.
Opublikowano androidx.collection:collection:1.1.0
i androidx.collection:collection-ktx:1.1.0
. Zatwierdzenia dostępne w wersji 1.1.0 znajdziesz tutaj.
Poniżej znajduje się podsumowanie zmian z 1.0.0 na 1.1.0:
Nowe funkcje
- Użyj wydajniejszej implementacji funkcji
contains
iisNotEmpty
w artefakcie „collection-ktx”. (Aosp/866529)
Zmiany w interfejsie API
- Dodaj
putIfAbsent
do usługLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
(aosp/772608) - Dodaj
getOrDefault
doSimpleArrayMap
(aosp/772607) - Dodaj dwuargumentowy element
remove
do elementówLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
. Wycofaj odpowiednie rozszerzenia KTX dla tej funkcji. (Aosp/772482) - Dodaj dwuargumentowy element
replace
do elementówLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
(aosp/772483) - Dodaj 3-argumentowy element
replace
do elementówLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
(aosp/772484) - Wycofaj zbędne metody
delete
. Metodaremove
ma ten sam interfejs API i funkcje oraz jest zgodna z interfejsem API używanym przez niewyspecjalizowane mapy. (Aosp/866053)
Poprawki błędów
- Zmień
SimpleArrayMap
, aby synchronizować wewnętrzną, globalną pamięć podręczną tablic w systemieSimpleArrayMap.class
, a nie wArrayMap.class
. Dzięki temu, jeśli używasz tylkoSimpleArrayMap
,ArrayMap
można usunąć za pomocą narzędzi do zmniejszania kodu. (Aosp/934557)
Wersja 1.1.0-rc01
7 maja 2019 r.
Opublikowano androidx.collection:collection:1.1.0-rc01
i androidx.collection:collection-ktx:1.1.0-rc01
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Użyj wydajniejszej implementacji funkcji
contains
iisNotEmpty
w artefakcie „collection-ktx”. (Aosp/866529)
Wersja 1.1.0-beta01
3 kwietnia 2019 r.
Opublikowano androidx.collection:collection:1.1.0-beta01
i androidx.collection:collection-ktx:1.1.0-beta01
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Metoda wspomniana w informacjach o wersji alfa03 jako mająca wartość
@RestrictTo
została usunięta. Nie była używana przez żadną bibliotekę AndroidX (teraz lub w przeszłości) i nie miała żadnych funkcji, których brakowało w publicznym interfejsie API.
Poprawki błędów
- Zmień
SimpleArrayMap
, aby synchronizować wewnętrzną, globalną pamięć podręczną tablic w systemieSimpleArrayMap.class
, a nie wArrayMap.class
. Dzięki temu, jeśli używasz tylkoSimpleArrayMap
,ArrayMap
można usunąć za pomocą narzędzi do zmniejszania kodu. (Aosp/934557)
Wersja 1.1.0-alfa03
13 marca 2019 r.
Zwolniono androidx.collection:collection:1.0.0-alpha03
i androidx.collection:collection-ktx:1.0.0-alpha03
.
Pełną listę zatwierdzeń zawartych w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Metoda na zasobie
ArraySet
, wcześniej oznaczona jako@RestrictTo(LIBRARY_GROUP)
, została zmieniona na@RestrictTo(LIBRARY_GROUP_PREFIX)
. Ma to na celu obsługę użycia historycznego przez inne biblioteki AndroidaX, które są teraz w różnych identyfikatorach grup Maven. Ta metoda stanie się publiczna lub zostanie usunięta w wersjach 1.1.0-alfa04, ponieważ inne biblioteki AndroidaX nie powinny mieć dostępu do specjalnych interfejsów API, których nie mają inni deweloperzy.
Wersja 1.1.0-alfa02
30 stycznia 2019 r.
Zwolniono androidx.collection:collection 1.1.0-alpha02
i androidx.collection:collection-ktx 1.1.0-alpha02
.
Zmiany w interfejsie API
- Wycofaj zbędne metody
delete
. Metodyremove
mają taki sam interfejs API i funkcje oraz są zgodne z interfejsem API używanym przez niewyspecjalizowane mapy. (Aosp/866053)
Wersja 1.1.0-alfa01
3 grudnia 2018 r.
Zmiany w interfejsie API
- Dodaj
putIfAbsent
do usługLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
(aosp/772608) - Dodaj
getOrDefault
doSimpleArrayMap
(aosp/772607) - Dodaj dwuargumentowy element
remove
do elementówLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
. Wycofaj odpowiednie rozszerzenia KTX dla tej funkcji. (Aosp/772482) - Dodaj dwuargumentowy element
replace
do elementówLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
(aosp/772483) - Dodaj 3-argumentowy element
replace
do elementówLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
(aosp/772484)