Kolekcja
Najnowsza aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
10 lipca 2024 r. | 1.4.1 | - | - | - |
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.1" implementation "androidx.collection:collection:$collection_version" }
Kotlin
dependencies { val collection_version = "1.4.1" 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 odkryjesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj istniejące problemy w tej bibliotece. Możesz oddać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia do śledzenia problemów.
Wersja 1.4
Wersja 1.4.1
10 lipca 2024 r.
Usługa androidx.collection:collection-*:1.4.1
została zwolniona. Wersja 1.4.1 zawiera te zatwierdzenia.
Poprawki błędów
- Podczas zmiany rozmiaru usuń nagrobki z mapy lub zestawu. (7a996c5, b/345960092)
Wersja 1.4.0
24 stycznia 2024 r.
Usługa androidx.collection:collection-*:1.4.0
została zwolniona. Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 1.3.0
Dodano nowe kolekcje o wysokiej wydajności do przechowywania elementów podstawowych bez zaznaczania pola w ramkach:
MutableScatterMap
iScatterMap
– zajęcia zMutableMap
i interfejsem API przypominającym mapęMutableScatterSet
iScatterSet
– klasa zMutableSet
i interfejsem Set-like APIMutableObjectList
iObjectList
– klasa z interfejsemMutableList
i interfejsem API przypominającym listę
Na przykład mapa z kluczem całkowitą 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.
Pakiet androidx.collection:collection-*:1.4.0-rc01
został udostępniony bez zmian. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Wersja 1.4.0-beta02
29 listopada 2023 r.
Usługa 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.
Usługa androidx.collection:collection-*:1.4.0-beta01
została zwolniona. Wersja 1.4.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązanie problemu
ListIterator
z nieprawidłowym ustawianiem wartości w narzędziuObjectList
, które z powoduIndexOutOfBoundsException
mogą spowodować awarię. (I3bd8a, b/307049391)
Wersja 1.4.0-alpha02
18 października 2023 r.
Usługa androidx.collection:collection-*:1.4.0-alpha02
została zwolniona. Wersja 1.4.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano przeciążenie dla funkcji
put
, które zwraca poprzednią wartość po zastąpieniu jej wszystkimi kolekcjami podstawowymi, takimi jakFloatFloatMap
. - Konwertuj metody
removeIf
w zbiorach podstawowych, np.MutableFloatFloatMap
, na wbudowane. Dzięki temu funkcja lambda dla parametruremoveIf
nie zostanie przydzielona.
Wersja 1.4.0-alpha01
4 października 2023 roku
Usługa androidx.collection:collection-*:1.4.0-alpha01
została zwolniona. Wersja 1.4.0-alfa01 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
– klasa zMutableSet
i interfejsem Set-like APIMutableObjectList
iObjectList
– klasa z interfejsemMutableList
i interfejsem API przypominającym listę
Dodano nowe kolekcje o wysokiej wydajności do przechowywania elementów podstawowych bez zaznaczania pola w ramkach:
Mutable[Int|Float|Long]List
– klasy z interfejsem API podobnym doMutableList<Int|Float|Long>
. Istnieje również uprawnienie tylko do odczytu ([Int|Float|Long]List
). Na przykładIntList
może zawierać liczby całkowite.Mutable[Int|Float|Long]Set
– klasy z interfejsem API podobnym doMutableSet<Int|Float|Long>
. Istnieje również uprawnienie tylko do odczytu ([Int|Float|Long]Set
). Na przykład IntSet mogą zawierać liczby całkowite.Mutable[Int|Float|Long|Object][Int|Float|Long|Object]Map
– klasy z interfejsem API podobnym doMutable<Int|Float|Long,T, Int|Float|Long|T>
. Istnieje również uprawnienie tylko do odczytu ([Int|Float|Long|Object][Int|Float|Long|Object]Map
). Na przykład mapa z kluczem całkowitą 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 roku
Usługa androidx.collection:collection-*:1.3.0
została zwolniona. Wersja 1.3.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 1.2.0
- Możesz teraz używać kolekcji w projektach wieloplatformowych Kotlin. Pamiętaj, że funkcje docelowe kolekcji nie na Androida są nadal w wersji eksperymentalnej, ale zdecydowaliśmy się scalić wersje, by ułatwić deweloperom ich wypróbowanie.
- Wszystkie źródła zostały przeniesione do Kotlin. W ramach tej zmiany wiele interfejsów API jest teraz wpisanych prawidłowo pod kątem wartości null, a kilka prywatnych użytkowników pakietów zostało przekształconych w
internal
. Lista dokładnych zmian jest dostępna w informacjach o wersji 1.3.x poniżej. - Wraz z migracją Kotlin pakiet
collection-ktx
został scalony z głównym artefaktem kolekcji. Możesz bezpiecznie porzucić wszystkie zależności odcollection:collection-ktx
nacollection:collection
, bo zasadacollection-ktx
jest teraz pusta.
Wersja 1.3.0-rc01
6 września 2023 r.
Pakiet androidx.collection:collection-*:1.3.0-rc01
został udostępniony bez zmian. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.
Wersja 1.3.0-beta01
9 sierpnia 2023 r.
Usługa 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.
Usługa androidx.collection:collection-*:1.3.0-alpha04
została zwolniona.
Poprawki błędów
- Usunęliśmy ograniczenia zależności z artefaktów Maven, aby obejść problem z kompilacją w natywnych miejscach docelowych Kotlin (b/274786186, KT-57531).
Wersja 1.3.0-alfa03
22 marca 2023 r.
Usługa androidx.collection:collection-*:1.3.0-alpha03
została zwolniona. Wersja 1.3.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- Możesz teraz używać kolekcji w projektach KMM. Pamiętaj, że kierowanie kolekcji na inne niż Androida jest wciąż w wersji eksperymentalnej, ale zdecydowaliśmy się scalić wersje, by ułatwić deweloperom ich wypróbowanie.
Zmiany interfejsu API
ArraySet
zamiastAbstractMutableCollection
stosuje terazMutableCollections
, aby umożliwić bardziej oszczędzającą pamięć implementację funkcjitoArray
(I1ac32)
Poprawki błędów
- Rozszerzenie
ArraySet.toArray
jest teraz dostępne tylko w przypadku JVM, ponieważ było zawsze uwzględniane tylko ze względu na zgodność z językiem Java. Użytkownicy Kotlin powinni zwykle używać pomocników.toTypedArray
pakietu stdlib, które zapewniają dokładnie te same funkcje z dodatkowym zabezpieczeniami typów. (I2C59b)
Wersja 1.3.0-alfa02
27 lipca 2022 roku
androidx.collection:collection:1.3.0-alpha02
i androidx.collection:collection-ktx:1.3.0-alpha02
zostały udostępnione. Wersja 1.3.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Usługa
SparseArrayCompat
jest teraz dostępna na platformach innych niż Jvm ze wspólnego artefaktu (Ic9bd0, b/219589118, b/228347315) - Usługa
CircularIntArray
jest teraz dostępna na platformach innych niż Jvm ze wspólnego artefaktu (I3d8ef, b/228344943) - Usługa
LongSparseArray
jest teraz dostępna na platformach innych niż Jvm ze wspólnego artefaktu (I73149, b/228347315)
Wersja 1.3.0-alpha01
29 czerwca 2022 r.
androidx.collection:collection:1.3.0-alpha01
i androidx.collection:collection-ktx:1.3.0-alpha01
zostały udostępnione. Wersja 1.3.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
collection-ktx
rozszerzenia zostały przeniesione do głównego artefaktu kolekcji (androidx.collection:collection
). Dzięki tej zmianie użytkownicy Kotlin będą mogli korzystać z dotychczasowych rozszerzeń -ktx bez konieczności stosowania zależności -ktx, zachowując zgodność z dotychczasowymi użytkownikami. Przechowywanie tych rozszerzeń w osobnym artefaktie -ktx nie jest już korzystne, ponieważ główny artefakt został przeniesiony do Kotlin. (I6eef2).
Zmiany interfejsu API
- Rozszerzenie
ArraySet
rozszerza teraz zakresAbstractMutableCollection
i nie implementuje już bezpośrednio interfejsu kolekcji. (If6da0, b/230860589) - Zmieniono
ArraySet
na Kotlin. Ze względu na bardziej rygorystyczne pisanie niektóre wywołania Kotlin mogą się już nie 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 zwracają typ zwracany
T?
, a nieT!
:ArraySet<T?>.valueAt(n)
ArraySet<T?>.removeAt(n)
ArraySet<T?>().iterator().next()
- Te wywołania w aplikacji Kotlin nie są już możliwe:
set.toArray()
– użyj usługiset.toTypedArray()
set.toArray(array)
– użyj usługiset.forEachIndexed(array::set)
- Te wywołania mają typ argumentu
- Połącz przeciążony konstruktor dla funkcji
SparseArrayCompat
jako opcjonalny argument dla użytkowników Kotlin. (If8407, b/227474719) - Usuń składnię operatora w polu
SparseArrayCompat.get(key, defaultValue).
. Pamiętaj, że nadal zezwala to na składnię operatorów.get(key)
, ale lepiej dopasowuje powierzchnię interfejsu APISparseArrayCompat
do innych klas w tej bibliotece. (I9a38D) - Przenieś rozszerzenia
LongSparseArray
do głównego artefaktu androidx.collection:collection. Dzięki tej zmianie użytkownicy Kotlin będą mogli korzystać z dotychczasowych rozszerzeń -ktx bez konieczności stosowania zależności -ktx, zachowując zgodność z dotychczasowymi użytkownikami. Przechowywanie tych rozszerzeń w osobnym artefaktie -ktx nie jest już korzystne, ponieważ główny artefakt został przeniesiony do Kotlin. (I8659a) - Przekonwertuj
LongSparseArray
na Kotlin. Ta zmiana dodaje do typów jawną wartość null, co jest zmianą kompatybilną z plikami binarnymi, ale może powodować niezgodności źródeł. W szczególności: * usługa.isEmpty
nie jest już dostępna jako właściwość, trzeba uzyskać do niej dostęp jako wywołanie funkcji w Kotlin –.isEmpty()
(Idfd0f). - Przekonwertuj
SimpleArrayMap
na Kotlin. Ta zmiana wprowadza kilka niezgodnych zmian ze względu na interoperacyjność języka Java z Kotlinem i możliwość poprawnego definiowania wartości 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 zmiana nie jest zgodna z danymi binarnymi, ale odzwierciedla zamierzoną widoczność tych pól i jest najbliższa możliwości, jakie możemy osiągnąć w Kotlin, ponieważ nie umożliwia określania widoczności pakietów prywatnych. - W przypadku niektórych typów wartości null są już prawidłowo zdefiniowane. Dotyczy to metod:
.getOrDefault
,.keyAt
,.valueAt
,.setValueAt
,.put
,.putIfAbsent
,.removeAt
,.replace
. - Dla użytkowników Kotlin narzędzie
.isEmpty()
jest teraz dostępne tylko jako funkcja, a nie również w ramach dostępu do usługi. (I271b7, b/182813986)
- Prywatne interfejsy API pakietu
Przekonwertuj
CircularArray
na Kotlin. Ważne zmiany:- Poprawia wartość null swoich generatorów na wartość różną od null, której nie można było wcześniej zadeklarować, ale została wyegzekwowana we wszystkich publicznych interfejsach API.
- Dzięki interoperacyjności Kotlina z językiem Java można było wcześniej uzyskać dostęp do pewnych metod zarówno jako właściwości, jak i funkcji. Aby jednak zmniejszyć liczbę duplikatów przy zachowaniu zgodności plików binarnych, konieczne było ich usunięcie, co jest zmianą niezgodną ze źródłem. Połączenia, których to dotyczy:
.isEmpty
,.getLast()
i.getFirst()
. (Ifffac).
Przekonwertuj
CircularIntArray
na Kotlin. Dzięki interoperacyjności Kotlina z językiem Java można było wcześniej uzyskać dostęp do pewnych metod zarówno jako właściwości, jak i funkcji. Aby jednak zmniejszyć liczbę duplikatów przy zachowaniu zgodności plików binarnych, konieczne było ich usunięcie, co jest zmianą niezgodną ze źródłem. Połączenia, których dotyczy problem:.isEmpty
,.getLast()
i.getFirst()
. (IE36CE)Konwertuj
LruCache
na Kotlin (Ia2f19)Przekonwertuj
SparseArrayCompat
na Kotlin. (If6fe8).Do funkcji
SparseArrayCompat.valueAt()
została dodana niewielka zmiana działania, która nie zwraca już nieprawidłowo wartościnull
w przypadku niezainicjowanych wywołań wykraczających poza granicęsize()
, ale w ramach podanej początkowej pojemności.Ta zmiana wprowadza też prawidłową wartość null w przypadku niektórych typów, które wcześniej nie były uwzględniane.
.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
1 grudnia 2021 r.
androidx.collection:collection:1.2.0
i androidx.collection:collection-ktx:1.2.0
zostały udostępnione. Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
- Dodaj konstruktor tablicowy do obiektu
ArraySet
. (Id7f19). - Zadbaj o zgodność z interfejsem API
entrySet()
, wdrażającentrySet().toArray()
,remove()
,removeAll()
iretainAll()
oraz usuwając implementacjęentrySet().addAll()
(I5d505)
Wersja 1.2.0-rc01
17 listopada 2021 r.
androidx.collection:collection:1.2.0-rc01
i androidx.collection:collection-ktx:1.2.0-rc01
zostały udostępnione. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Brak zmian w porównaniu z poprzednią wersją beta.
Wersja 1.2.0-beta01
13 października 2021 r.
androidx.collection:collection:1.2.0-beta01
i androidx.collection:collection-ktx:1.2.0-beta01
zostały udostępnione. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Zadbaj o zgodność z interfejsem API
entrySet()
, wdrażającentrySet().toArray()
,remove()
,removeAll()
iretainAll()
oraz usuwając implementacjęentrySet().addAll()
(I5d505)
Wersja 1.2.0-alpha01
16 grudnia 2020 roku
androidx.collection:collection:1.2.0-alpha01
i androidx.collection:collection-ktx:1.2.0-alpha01
zostały udostępnione. Wersja 1.2.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaj konstruktor tablicowy do obiektu
ArraySet
. (Id7f19).
Wersja 1.1.0
Wersja 1.1.0
5 czerwca 2019 r.
androidx.collection:collection:1.1.0
i androidx.collection:collection-ktx:1.1.0
zostały udostępnione. Zatwierdzenia zawarte w wersji 1.1.0 znajdziesz tutaj.
Poniżej znajduje się podsumowanie zmian z wersji 1.0.0 na wersję 1.1.0:
Nowe funkcje
- Użyj wydajniejszej implementacji funkcji
contains
iisNotEmpty
w artefakcie „collection-ktx”. (Aosp/866529)
Zmiany interfejsu API
- Dodaj
putIfAbsent
do usługLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
(aosp/772608) - Dodaj:
getOrDefault
do:SimpleArrayMap
(aosp/772607) - Dodaj dwuargument
remove
do funkcjiLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
. Wycofaj odpowiednie rozszerzenia KTX w celu korzystania z tej funkcji. (Aosp/772482) - Dodaj dwuargument
replace
do elementówLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
(aosp/772483) - Dodaj 3-argumentowy
replace
do elementówLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
(aosp/772484) - Wycofaj zbędne metody
delete
. Metodaremove
zapewnia taki sam interfejs API i funkcjonalność oraz jest zgodny z interfejsem API używanym w niewyspecjalizowanych Mapach. (Aosp/866053).
Poprawki błędów.
- Zmień
SimpleArrayMap
, aby synchronizować wewnętrzną globalną pamięć podręczną tablic w systemieSimpleArrayMap.class
zamiastArrayMap.class
. Dzięki temu jeśli używasz tylko plikuSimpleArrayMap
, narzędzieArrayMap
będzie mogło zostać usunięte za pomocą narzędzi do zmniejszania kodu. (Aosp/934557)
Wersja 1.1.0-rc01
7 maja 2019 r.
androidx.collection:collection:1.1.0-rc01
i androidx.collection:collection-ktx:1.1.0-rc01
zostały udostępnione. 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.
androidx.collection:collection:1.1.0-beta01
i androidx.collection:collection-ktx:1.1.0-beta01
zostały udostępnione. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany interfejsu API
- Metoda ta opisana w informacjach o wersji alfa03, ponieważ jej wartość
@RestrictTo
uległa zmianie, została usunięta. Nie był używany przez żadną bibliotekę AndroidaX (teraz lub w przeszłości) i nie oferował ż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
zamiastArrayMap.class
. Dzięki temu jeśli używasz tylko plikuSimpleArrayMap
, narzędzieArrayMap
będzie mogło zostać usunięte za pomocą narzędzi do zmniejszania kodu. (Aosp/934557)
Wersja 1.1.0-alfa03
13 marca 2019 r.
androidx.collection:collection:1.0.0-alpha03
i androidx.collection:collection-ktx:1.0.0-alpha03
zostały zwolnione.
Pełną listę zatwierdzeń zawartych w tej wersji znajdziesz tutaj.
Zmiany interfejsu API
- Metoda w systemie
ArraySet
oznaczona wcześniej jako@RestrictTo(LIBRARY_GROUP)
została zmieniona na@RestrictTo(LIBRARY_GROUP_PREFIX)
. Ma to na celu obsługę danych historycznych przez inne biblioteki AndroidaX, które są teraz dostępne w innych identyfikatorach grup Maven. Ta metoda zostanie udostępniona publicznie lub usunięta w wersjach 1.1.0–alfa, ponieważ inne biblioteki AndroidaX nie powinny korzystać ze specjalnych interfejsów API, których nie mają inni deweloperzy.
Wersja 1.1.0-alfa02
30 stycznia 2019 r.
androidx.collection:collection 1.1.0-alpha02
i androidx.collection:collection-ktx 1.1.0-alpha02
zostały zwolnione.
Zmiany interfejsu API
- Wycofaj zbędne metody
delete
. Metodyremove
zapewniają taki sam interfejs API i te same funkcje oraz są zgodne z interfejsem API używanym w niespecjalistycznych Mapach Google. (Aosp/866053).
Wersja 1.1.0-alpha01
3 grudnia 2018 r.
Zmiany interfejsu API
- Dodaj
putIfAbsent
do usługLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
(aosp/772608) - Dodaj:
getOrDefault
do:SimpleArrayMap
(aosp/772607) - Dodaj dwuargument
remove
do funkcjiLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
. Wycofaj odpowiednie rozszerzenia KTX w celu korzystania z tej funkcji. (Aosp/772482) - Dodaj dwuargument
replace
do elementówLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
(aosp/772483) - Dodaj 3-argumentowy
replace
do elementówLongSparseArray
,SimpleArrayMap
iSparseArrayCompat
(aosp/772484)