Kolekcja
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja alfa |
|---|---|---|---|---|
| 23 września 2026 r. | 1.6.0 | 1.7.0-rc01 | - | - |
Deklarowanie zależności
Aby dodać zależność od sekcji Zbieranie danych, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
Groovy
dependencies { def collection_version = "1.6.0" implementation "androidx.collection:collection:$collection_version" }
Kotlin
dependencies { val collection_version = "1.6.0" implementation("androidx.collection:collection:$collection_version") }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Prześlij opinię
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.7
Wersja 1.7.0-rc01
23 września 2026 r.
Publikacja androidx.collection:collection-*:1.7.0-rc01 Wersja 1.7.0-rc01 zawiera te zmiany.
Wersja 1.7.0-alpha01
9 września 2026 r.
Publikacja androidx.collection:collection-*:1.7.0-alpha01 Wersja 1.7.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano funkcje
sortWith,sortByisortByDescendingdo funkcjiMutableObjectListoraz algorytmybinarySearchw przypadku klas list pierwotnychObjectList(FloatList,IntList,LongList,DoubleList). Dodano przeciążeniabinarySearchz użyciem dokładnych typów komponentów w przypadku klasFloatList,LongListiDoubleListoraz istniejące metodyInt. (Ied6f7) androidx.benchmarkma terazminSdkna poziomie 24. (Ic2a85)- Optymalizowanie
ScatterMap.getOrPut()skuteczności (I6e46b) - Dodano
@JvmOverloadsdo funkcji przycinania klas List (I24410, b/481371562) - Dodano rozszerzenie
.toOrderedScatterSet(). Zapewnia alternatywę tylko do odczytu dla funkcji konwersji z możliwością zmiany i zwraca pojedynczy element bez przydzielania pamięci, gdy kolekcja źródłowa jest pusta. (I1b767)
Poprawki błędów
- Ulepszone haszowanie w
ScatterMapi kolekcjach typów prostych, aby zmniejszyć liczbę kolizji w przypadku kluczyFloat. (I7d2ac, b/528428583) - Wdróż
toString()w przypadkuScatterMap.asMapklucza, wartości i wyświetleń wpisów. Zapewnia to lepszą widoczność debugowania dla programistów korzystających z otoczkiasMap(). (I64791)
Wersja 1.6
Wersja 1.6.0
11 marca 2026 r.
Publikacja androidx.collection:collection-*:1.6.0 Wersja 1.6.0 zawiera te zmiany.
Ważne zmiany od wersji 1.5.0:
- Dodano wersję funkcji trim bez argumentów dla
MutableFloatList,MutableDoubleList,MutableIntList. - Dodaj funkcje rozszerzeń
toMutableOrderedScatterSet,toOrderedScatterSet,toMutableScatterMap,toScatterMap,toMutableScatterSet,toScatterSet. - Ulepszyliśmy działanie
ScatterMapiScatterSet. - Wersja
minSdkto teraz 23.
Wersja 1.6.0-rc01
11 lutego 2026 r.
Publikacja androidx.collection:collection-*:1.6.0-rc01 Wersja 1.6.0-rc01 zawiera te zmiany.
Wersja 1.6.0-beta01
14 stycznia 2026 r.
Publikacja androidx.collection:collection-*:1.6.0-beta01 Wersja 1.6.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano rozszerzenia
.toScatterSet()i.toScatterMap(). Stanowią one alternatywę tylko do odczytu dla funkcji konwersji z możliwością zmiany i zwracają pojedyncze elementy bez przydzielania pamięci, gdy kolekcja źródłowa jest pusta. (I1769a, b/459867876) - Zastąp pseudokonstruktory
MutableScatterMap(source)iMutableScatterSet(source)standardowymi funkcjami rozszerzającymi.toMutableScatterMap()i.toMutableScatterSet(). Jest to zgodne z konwencjami języka Kotlin dotyczącymi konwersji kolekcji. (Ic9ca6, b/459867876) - Dodaj funkcje fabryczne
MutableScatterMap(Map)iMutableScatterSet(Set). Użyj tych funkcji, aby łatwo utworzyć kolekcję rozproszoną wstępnie wypełnioną zawartością istniejącej kolekcji. (I51d70)
Poprawki błędów
- Ta biblioteka używa teraz adnotacji o wartościach null z JSpecify, które są używane w typach. Programiści Kotlin powinni używać tego argumentu kompilatora, aby wymusić prawidłowe użycie:
-Xjspecify-annotations=strict(jest to domyślne ustawienie od wersji 2.1.0 kompilatora Kotlin) (I05181, b/326456246)
Wersja 1.6.0-alpha01
27 sierpnia 2025 roku
Publikacja androidx.collection:collection-*:1.6.0-alpha01 Wersja 1.6.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Projekty wydane w Kotlinie 2.0 wymagają użycia KGP w wersji 2.0.0 lub nowszej (Idb6b5).
Poprawki błędów
- Wcześniej funkcja
SparseArrayCompatzwracała wartośćnulldla funkcji valueAt i wartośćkeyAt, gdy przekazywano indeks, który mieścił się w przydzielonym zakresie, ale poza wstawionym zakresem0..size -1. Jak udokumentowano, takie zachowanie nigdy nie było oczekiwane i wykraczało poza prawidłowy zakres danych wejściowych. Ta zmiana naprawia to zachowanie, tak aby w przypadku przekazania nieprawidłowego indeksu zgłaszać błądIndexOutOfBounds. (I68453)
Wkład zewnętrzny
Dziękujemy Jake’owi Whartonowi za te treści:
- Dostosuj działanie
joinToStringdo kolekcji platformy, dodając separator przed wskaźnikiem obcięcia i przyrostek po nim podczas ograniczania liczby uwzględnionych elementów. (I1b7e8) ScatterSet.hashCodenie chroni już przed rekurencją (czyli dodawaniem zbioru do samego siebie). Dzięki temu jego działanie będzie zgodne z działaniemScatterMap,HashSeti pierwotnych zbiorów opartych na rozproszeniu (np.LongSet). Pamiętaj, że metodaequalsbyła już podatna na rekurencję, a metodatoStringchroni przed nią – oba te zachowania są zgodne z innymi kolekcjami. (I9c84a)- Funkcja
ScatterSet.retainAlljest teraz wbudowana, aby uniknąć tworzenia instancji lambda. (Ifa4b7) ScatterSet.hashCodenie używa już pojemności w obliczeniach skrótu, co zapewnia, że równe treści, ale o różnej pojemności, nadal dają tę samą wartość. (Ic863b)IllegalStateExceptionjest teraz zgłaszany, jeśli wywołaszremove()przednext()na iteratorze kolekcjikeys,valueslubentriesw przypadkuScatterMap.asMap()lubScatterSet.asSet(). Dzięki temu będzie działać tak samo jak zwykła mapa i zbiór. (I71694)
Wersja 1.5
Wersja 1.5.0
12 marca 2025 r.
Publikacja androidx.collection:collection-*:1.5.0 Wersja 1.5.0 zawiera te zmiany.
Wersja 1.5.0-rc01
26 lutego 2025 r.
Publikacja androidx.collection:collection-*:1.5.0-rc01 Wersja 1.5.0-rc01 zawiera te zmiany.
Wersja 1.5.0-beta03
29 stycznia 2025 r.
Publikacja androidx.collection:collection-*:1.5.0-beta03 Wersja 1.5.0-beta03 zawiera te zmiany.
Wersja 1.5.0-beta02
15 stycznia 2025 r.
Publikacja androidx.collection:collection-*:1.5.0-beta02 Wersja 1.5.0-beta02 zawiera te zmiany.
Wersja 1.5.0-beta01
11 grudnia 2024 r.
Publikacja androidx.collection:collection-*:1.5.0-beta01 Wersja 1.5.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano obsługę
watchosDeviceArm64KMP i wersji docelowej Kotlin 1.9 (Icf15d, b/364652024)
Wersja 1.5.0-alpha06
13 listopada 2024 r.
Publikacja androidx.collection:collection-*:1.5.0-alpha06 Wersja 1.5.0-alpha06 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy awarię, która mogła wystąpić w
SieveCacheiOrderedScatterSetpodczas dodawania wielu elementów, co powodowało powtarzające się kolizje kluczy. (Iaaf3d, b/375607736) - Dodaj element docelowy wasm do biblioteki kolekcji. (I66fe3, b/352722444)
Wersja 1.5.0-alpha05
30 października 2024 r.
Publikacja androidx.collection:collection-*:1.5.0-alpha05 Wersja 1.5.0-alpha05 zawiera te zmiany.
Wersja 1.5.0-alpha04
16 października 2024 r.
Publikacja androidx.collection:collection-*:1.5.0-alpha04 Wersja 1.5.0-alpha04 zawiera te zmiany.
Wersja 1.5.0-alpha03
2 października 2024 r.
Publikacja androidx.collection:collection-*:1.5.0-alpha03 Wersja 1.5.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Aktualizacja wersji języka Kotlin do 1.9 (I1a14c)
Wkład zewnętrzny
- Jedź dalej na
containsdo:containsKey. Dzięki Jake Wharton! (I9362b) - Dodaj konstruktory kontenerów dla kolekcji wyspecjalizowanych w skalarach. Dzięki Jake Wharton! (I13179)
Wersja 1.5.0-alpha02
18 września 2024 r.
Publikacja androidx.collection:collection-*:1.5.0-alpha02 Wersja 1.5.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy obsługę platformy docelowej
watchosDeviceArm64. (I1cc04, b/364652024)
Wersja 1.5.0-alpha01
4 września 2024 r.
Publikacja androidx.collection:collection-*:1.5.0-alpha01 Wersja 1.5.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
OrderedScatterSetto nowa kolekcja uporządkowana bez przydziału (Ic4178)SieveCacheto nowy zamiennikLruCache, który nie wymaga przydzielania pamięci i ma lepsze charakterystyki współczynnika trafień. (I50a17)- Udostępniono wewnętrzną reprezentację
packedValuedlaIntIntPairiFloatFloatPair. (Ifeb75, b/331853566) - Dodanie dostępu do tablicy treści w kolekcjach list. (I899d5, b/333903173)
- Dodaliśmy
DoubleList, czyli strukturę danych podobną do listy, zoptymalizowaną pod kątem wartości typu Double. (Ia10d1, b/315127635)
Poprawki błędów
- Biblioteka kolekcji będzie teraz obsługiwać język Kotlin w wersji 1.9 (I0782f)
- Zoptymalizuj wiele kolekcji, aby zwiększyć ich wydajność. (Ic0566)
Wersja 1.4
Wersja 1.4.5
30 października 2024 r.
Publikacja androidx.collection:collection-*:1.4.5 Wersja 1.4.5 zawiera te zmiany.
Wersja 1.4.4
18 września 2024 r.
Publikacja androidx.collection:collection-*:1.4.4 Wersja 1.4.4 zawiera te zmiany.
Poprawki błędów
- Obejście
ArrayIndexOutOfBoundspodczas sortowania pustej kolekcji. (I65245)
Wersja 1.4.3
7 sierpnia 2024 r.
Publikacja androidx.collection:collection-*:1.4.3 Wersja 1.4.3 zawiera te zmiany.
Poprawki błędów
- Usunięto błąd, który mógł powodować uszkodzenie danych w przypadku typów
ScatterMap,ScatterSeti ich wariantów pierwotnych. (I38a4a, b/352560465) - Optymalizacje skuteczności. W szczególności:
- Zastąp wywołania funkcji
check()irequired()wariantami, które nie wstawiają wyjątków w kodzie. Zmniejsza to rozmiar końcowego pliku binarnego, a co ważniejsze, nieco zmniejsza obciążenie pamięci podręcznej instrukcji. - Ulepszone
removeDeletedMarkers()w kolekcjach z rodziny „scatter”. Nowa wersja usuwa po 8 znaczników naraz i pomija droższe operacje zapisu. (Ic0566)
- Zastąp wywołania funkcji
Wersja 1.4.2
24 lipca 2024 r.
Publikacja androidx.collection:collection-*:1.4.2 Wersja 1.4.2 zawiera te zmiany.
Nowe funkcje
- Obejmuje dodatkowe platformy Kotlin Multiplatform:
watchos,tvos,linuxArm64. (b/352543988)
Wersja 1.4.1
10 lipca 2024 r.
Publikacja androidx.collection:collection-*:1.4.1 Wersja 1.4.1 zawiera te zmiany.
Poprawki błędów
- Usuwanie usuniętych znaczników z mapy lub zbioru podczas zmiany rozmiaru. (7a996c5, b/345960092)
Wersja 1.4.0
24 stycznia 2024 r.
Publikacja androidx.collection:collection-*:1.4.0 Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.3.0
Dodaliśmy nowe kolekcje o wysokiej wydajności do przechowywania typów prostych bez opakowywania:
MutableScatterMapiScatterMap– klasy z interfejsem APIMutableMapi interfejsem API podobnym do MapMutableScatterSetiScatterSet– klasy zMutableSeti interfejsem API podobnym do zbioruMutableObjectList&ObjectList- Classes withMutableList& List-like API
Na przykład mapa z kluczem całkowitym i wartością typu odniesienia 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 wersją ScatterMap/MutableScatterMap.
Wersja 1.4.0-rc01
10 stycznia 2024 r.
androidx.collection:collection-*:1.4.0-rc01 jest publikowany bez zmian. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Wersja 1.4.0-beta02
29 listopada 2023 r.
Publikacja androidx.collection:collection-*:1.4.0-beta02 Wersja 1.4.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
- Poprawiona skuteczność
FloatFloatPair. (If5537)
Poprawki błędów
ScatterMap.asMap()iterator zwraca teraz nowe instancje (I28932, b/310365754)
Wersja 1.4.0-beta01
15 listopada 2023 r.
Publikacja androidx.collection:collection-*:1.4.0-beta01 Wersja 1.4.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawka dotycząca
ListIterator, która nieprawidłowo ustawiała wartości wObjectList, co mogło powodować awarię z powoduIndexOutOfBoundsException. (I3bd8a, b/307049391)
Wersja 1.4.0-alpha02
18 października 2023 r.
Publikacja androidx.collection:collection-*:1.4.0-alpha02 Wersja 1.4.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano przeciążenie funkcji
put, które zwraca poprzednią wartość, gdy jest ona zastępowana we wszystkich kolekcjach typów prostych, np.FloatFloatMap. - Konwertuj metody
removeIfw kolekcjach typów prostych, np.MutableFloatFloatMap, na wbudowane. Dzięki temu lambda dlaremoveIfnie zostanie przydzielona.
Wersja 1.4.0-alpha01
4 października 2023 roku
Publikacja androidx.collection:collection-*:1.4.0-alpha01 Wersja 1.4.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
Dodaliśmy nowe kolekcje o wysokiej wydajności, które mają niski narzut alokacji i wysoką wydajność:
MutableScatterMapiScatterMap– klasy z interfejsem APIMutableMapi interfejsem API podobnym do MapMutableScatterSetiScatterSet– klasy zMutableSeti interfejsem API podobnym do zbioruMutableObjectList&ObjectList- Classes withMutableList& List-like API
Dodaliśmy nowe kolekcje o wysokiej wydajności do przechowywania typów prostych bez opakowywania:
Mutable[Int|Float|Long]List– klasy z interfejsem API podobnym doMutableList<Int|Float|Long>. Istnieje też konto[Int|Float|Long]Listtylko do odczytu. Na przykład liczby całkowite mogą być przechowywane w obiekcieIntList.Mutable[Int|Float|Long]Set– klasy z interfejsem API podobnym doMutableSet<Int|Float|Long>. Istnieje też konto[Int|Float|Long]Settylko do odczytu. Na przykład liczby całkowite mogą być przechowywane w obiekcie IntSet.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 też wersja[Int|Float|Long|Object][Int|Float|Long|Object]Maptylko do odczytu. Na przykład mapa z kluczem całkowitym i wartością typu odniesienia toIntObjectMap<T>. Mapa z długim kluczem i wartością zmiennoprzecinkową toLongFloatMap. Nie ma wersji o nazwieObjectObjectMap, ponieważ jest ona objęta wersjąScatterMap/MutableScatterMap.
Wersja 1.3.0
Wersja 1.3.0
4 października 2023 roku
Publikacja androidx.collection:collection-*:1.3.0 Wersja 1.3.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.2.0
- Teraz możesz używać kolekcji w projektach Kotlin Multiplatform. Pamiętaj, że platformy inne niż Android w przypadku kolekcji są nadal w fazie eksperymentalnej, ale postanowiliśmy połączyć wersje, aby deweloperzy mogli łatwiej je wypróbować.
- Cały kod źródłowy został przeniesiony do języka Kotlin. W ramach tej zmiany wiele interfejsów API ma teraz prawidłowe typy wartości null, a kilka elementów prywatnych pakietu stało się
internal. Listę dokładnych zmian znajdziesz w informacjach o wersji 1.3.x poniżej. - Wraz z migracją do języka Kotlin
collection-ktxzostał scalony z głównym artefaktem kolekcji. Możesz bezpiecznie usunąć wszystkie zależności odcollection:collection-ktxna rzeczcollection:collection, ponieważcollection-ktxjest teraz puste.
Wersja 1.3.0-rc01
6 września 2023 r.
androidx.collection:collection-*:1.3.0-rc01 jest publikowany bez zmian. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.
Wersja 1.3.0-beta01
9 sierpnia 2023 r.
Publikacja androidx.collection:collection-*:1.3.0-beta01 Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Wersja 1.3.0-alpha04
24 marca 2023 r.
Publikacja androidx.collection:collection-*:1.3.0-alpha04
Poprawki błędów
- Usunięto ograniczenia zależności z artefaktów Maven, aby obejść problem z kompilacją w przypadku natywnych elementów docelowych Kotlin (b/274786186, KT-57531).
Wersja 1.3.0-alpha03
22 marca 2023 r.
Publikacja androidx.collection:collection-*:1.3.0-alpha03 Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Możesz teraz używać kolekcji w projektach KMM. Pamiętaj, że platformy docelowe Kolekcji inne niż Android są nadal w fazie eksperymentalnej, ale postanowiliśmy połączyć wersje, aby deweloperzy mogli łatwiej je wypróbować.
Zmiany w interfejsie API
ArraySetimplementuje terazMutableCollectionszamiastAbstractMutableCollection, aby umożliwić bardziej wydajne pod względem pamięci wdrożenietoArray(I1ac32).
Poprawki błędów
ArraySet.toArrayjest teraz dostępny tylko w JVM, ponieważ zawsze był uwzględniany tylko ze względu na zgodność z Java. Użytkownicy języka Kotlin powinni raczej korzystać z funkcji pomocniczych.toTypedArraybiblioteki standardowej, które zapewniają dokładnie taką samą funkcjonalność z dodatkowym bezpieczeństwem typów. (I2c59b)
Wersja 1.3.0-alpha02
27 lipca 2022 roku
Publikacja 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
SparseArrayCompatjest teraz dostępny na platformach innych niż JVM w ramach wspólnego artefaktu (Ic9bd0, b/219589118, b/228347315).CircularIntArrayjest teraz dostępny na platformach innych niż JVM z powszechnego artefaktu (I3d8ef, b/228344943).LongSparseArrayjest teraz dostępny na platformach innych niż JVM w ramach wspólnego artefaktu (I73149, b/228347315).
Wersja 1.3.0-alpha01
29 czerwca 2022 r.
Publikacja 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-ktxrozszerzenia zostały przeniesione do głównego artefaktu kolekcji,androidx.collection:collection. Dzięki tej zmianie użytkownicy języka Kotlin będą mogli korzystać z wcześniej istniejących rozszerzeń -ktx bez konieczności dodawania zależności -ktx, przy jednoczesnym zachowaniu zgodności z obecnymi użytkownikami. Utrzymywanie tych rozszerzeń w osobnym artefakcie -ktx nie jest już korzystne, ponieważ główny artefakt został przeniesiony do języka Kotlin. (I6eef2)
Zmiany w interfejsie API
ArraySetrozszerza terazAbstractMutableCollectioni nie implementuje już bezpośrednio interfejsu Collection. (If6da0, b/230860589)- Przekonwertowano
ArraySetna język Kotlin. Ze względu na bardziej rygorystyczne typowanie niektóre wywołania Kotlin mogą już nie być kompilowane. (Id68c1, b/230860589)- Te wywołania mają argument typu
T, a nieT?:ArraySet<T>.contains(null)ArraySet<T>.add(null)ArraySet<T>.remove(null)
- Te wywołania mają typ zwracany
T?, a nieT!:ArraySet<T?>.valueAt(n)ArraySet<T?>.removeAt(n)ArraySet<T?>().iterator().next()
- Z poziomu języka 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ą argument typu
- Połącz przeciążony konstruktor dla
SparseArrayCompatjako argument opcjonalny dla użytkowników języka Kotlin. (If8407, b/227474719) - Usuń składnię operatora dla
SparseArrayCompat.get(key, defaultValue).. Pamiętaj, że nadal umożliwia to składnię operatora dla.get(key), ale lepiej dopasowuje powierzchnię interfejsu APISparseArrayCompatdo innych klas w tej bibliotece. (I9a38d) - Przenieś
LongSparseArrayrozszerzeń do głównego artefaktu androidx.collection:collection. Dzięki tej zmianie użytkownicy języka Kotlin będą mogli korzystać z wcześniej istniejących rozszerzeń -ktx bez konieczności stosowania zależności -ktx, przy jednoczesnym zachowaniu zgodności z obecnymi użytkownikami. Utrzymywanie tych rozszerzeń w osobnym artefakcie -ktx nie jest już korzystne, ponieważ główny artefakt został przeniesiony do języka Kotlin. (I8659a) - Przekonwertuj
LongSparseArrayna język Kotlin. Ta zmiana dodaje do typów jawne wartości null, co jest zmianą zgodną binarnie, ale może powodować niezgodności w kodzie źródłowym. W szczególności: *.isEmptynie jest już dostępny jako właściwość, musi być dostępny jako wywołanie funkcji w języku Kotlin –.isEmpty()(Idfd0f). - Przekonwertuj
SimpleArrayMapna język Kotlin. Ta zmiana wprowadza kilka niezgodnych zmian wynikających z współdziałania języków Java i Kotlin oraz możliwości prawidłowego określania wartości null typów w kodzie źródłowym.- Interfejsy API pakietu prywatnego
.mSize,.mArray,.mHashes,.indexOf(),.indexOfNull()i.indexOfValue()zostały ustawione jako prywatne. Jest to zmiana technicznie niezgodna binarnie, ale odzwierciedla zamierzoną widoczność tych pól i jest najbliższym rozwiązaniem, jakie możemy osiągnąć w Kotlinie, ponieważ nie ma w nim możliwości określenia widoczności pakietu prywatnego. - Wartość null niektórych typów jest teraz prawidłowo zdefiniowana. Dotyczy to tych metod:
.getOrDefault,.keyAt,.valueAt,.setValueAt,.put,.putIfAbsent,.removeAt,.replace. - W przypadku użytkowników języka Kotlin funkcja
.isEmpty()jest teraz dostępna tylko jako funkcja, a nie jako dostęp do właściwości. (I271b7, b/182813986)
- Interfejsy API pakietu prywatnego
Przekonwertuj
CircularArrayna język Kotlin. Najważniejsze zmiany:- Poprawia wartość nullability typów ogólnych na wartość inną niż null, co wcześniej było niemożliwe do zadeklarowania, ale było wymuszane we wszystkich publicznych interfejsach API.
- Ze względu na interoperacyjność języka Kotlin z językiem Java wcześniej można było uzyskiwać dostęp do niektórych metod jako właściwości lub funkcji. Aby jednak zmniejszyć duplikację przy zachowaniu zgodności binarnej, konieczne było usunięcie tych elementów, co jest zmianą niezgodną ze źródłem. Wywołania, których dotyczy problem:
.isEmpty,.getLast()i.getFirst(). (Ifffac)
Przekonwertuj
CircularIntArrayna język Kotlin. Ze względu na interoperacyjność języka Kotlin z językiem Java wcześniej można było uzyskać dostęp do niektórych metod jako właściwości lub funkcji. Aby jednak zmniejszyć duplikowanie przy zachowaniu zgodności binarnej, konieczne było usunięcie tych elementów, co jest zmianą niezgodną ze źródłem. Połączenia, których dotyczy problem:.isEmpty,.getLast()i.getFirst(). (Ie36ce)Konwertowanie
LruCachena język Kotlin (Ia2f19)Przekonwertuj
SparseArrayCompatna język Kotlin. (If6fe8)Do funkcji
SparseArrayCompat.valueAt()dodano niewielką zmianę w sposobie działania, która sprawia, że nie zwraca ona już nieprawidłowo wartościnullw przypadku niezainicjowanych wywołań poza zakresemsize(), ale w ramach podanej początkowej pojemności.Wprowadzamy też prawidłową wartość null dla niektórych typów, która wcześniej nie była dostępna.
.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.
Publikacja 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 tablicy do
ArraySet. (Id7f19) - Zapewnij zgodność z interfejsem
entrySet()API, wdrażającentrySet().toArray(),remove(),removeAll()iretainAll()oraz usuwając implementacjęentrySet().addAll()(I5d505).
Wersja 1.2.0-rc01
17 listopada 2021 r.
Publikacja 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 porównaniu z poprzednią wersją beta.
Wersja 1.2.0-beta01
13 października 2021 r.
Publikacja 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
- Zapewnij zgodność z interfejsem
entrySet()API, wdrażającentrySet().toArray(),remove(),removeAll()iretainAll()oraz usuwając implementacjęentrySet().addAll()(I5d505).
Wersja 1.2.0-alpha01
16 grudnia 2020 roku
Publikacja androidx.collection:collection:1.2.0-alpha01 i androidx.collection:collection-ktx:1.2.0-alpha01 Wersja 1.2.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaj konstruktor tablicy do
ArraySet. (Id7f19)
Wersja 1.1.0
Wersja 1.1.0
5 czerwca 2019 r.
Publikacja androidx.collection:collection:1.1.0 i androidx.collection:collection-ktx:1.1.0 Zatwierdzenia zawarte w wersji 1.1.0 znajdziesz tutaj.
Poniżej znajdziesz podsumowanie zmian wprowadzonych w wersji 1.1.0 w porównaniu z wersją 1.0.0:
Nowe funkcje
- Używaj bardziej wydajnej implementacji funkcji
containsiisNotEmptyw artefakcie „collection-ktx”. (aosp/866529)
Zmiany w interfejsie API
- Dodawanie
putIfAbsentdoLongSparseArray,SimpleArrayMapiSparseArrayCompat(aosp/772608) - Dodaj
getOrDefaultdoSimpleArrayMap(aosp/772607) - Dodaj funkcję dwuargumentową
removedo funkcjiLongSparseArray,SimpleArrayMapiSparseArrayCompat. Wycofać odpowiednie rozszerzenia KTX dla tej funkcji. (aosp/772482) - Dodaj funkcję
replacez 2 argumentami doLongSparseArray,SimpleArrayMapiSparseArrayCompat(aosp/772483) - Dodaj 3-argumentową funkcję
replacedoLongSparseArray,SimpleArrayMapiSparseArrayCompat(aosp/772484) - Wycofaj zbędne metody
delete. Metodaremoveoferuje ten sam interfejs API i funkcje oraz jest zgodna z interfejsem API używanym przez niespecjalistyczne Mapy. (aosp/866053)
Poprawki błędów
- Zmień
SimpleArrayMap, aby zsynchronizować wewnętrzną globalną pamięć podręczną tablic naSimpleArrayMap.classzamiast naArrayMap.class. Dzięki temu, jeśli używasz tylkoSimpleArrayMap, narzędzia do zmniejszania kodu mogą usunąćArrayMap. (aosp/934557)
Wersja 1.1.0-rc01
7 maja 2019 r.
Publikacja androidx.collection:collection:1.1.0-rc01 i androidx.collection:collection-ktx:1.1.0-rc01 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
- Używaj bardziej wydajnej implementacji funkcji
containsiisNotEmptyw artefakcie „collection-ktx”. (aosp/866529)
Wersja 1.1.0-beta01
3 kwietnia 2019 r.
Publikacja androidx.collection:collection:1.1.0-beta01 i androidx.collection:collection-ktx:1.1.0-beta01 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Metoda, o której wspomnieliśmy w informacjach o wersji alpha03 jako tej, której wartość
@RestrictTozostała zmieniona, została usunięta. Nie była używana przez żadną bibliotekę AndroidX (obecnie ani w przeszłości) i nie oferowała żadnych funkcji, których nie było w publicznym interfejsie API.
Poprawki błędów
- Zmień
SimpleArrayMap, aby zsynchronizować wewnętrzną globalną pamięć podręczną tablic naSimpleArrayMap.classzamiast naArrayMap.class. Dzięki temu, jeśli używasz tylkoSimpleArrayMap, narzędzia do zmniejszania kodu mogą usunąćArrayMap. (aosp/934557)
Wersja 1.1.0-alpha03
13 marca 2019 r.
androidx.collection:collection:1.0.0-alpha03 i androidx.collection:collection-ktx:1.0.0-alpha03 są dostępne.
Pełną listę zmian w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Metoda w
ArraySet, która wcześniej była oznaczona jako@RestrictTo(LIBRARY_GROUP), została zmieniona na@RestrictTo(LIBRARY_GROUP_PREFIX). Ma to na celu obsługę starszych wersji innych bibliotek AndroidX, które znajdują się teraz w innych identyfikatorach grup Maven. Ta metoda zostanie upubliczniona lub usunięta w wersji 1.1.0-alpha04, ponieważ inne biblioteki AndroidX nie powinny mieć specjalnych interfejsów API, które nie są dostępne dla innych deweloperów.
Wersja 1.1.0-alpha02
30 stycznia 2019 r.
androidx.collection:collection 1.1.0-alpha02 i androidx.collection:collection-ktx 1.1.0-alpha02 są dostępne.
Zmiany w interfejsie API
- Wycofaj zbędne metody
delete. Metodyremoveoferują ten sam interfejs API i funkcje, a także są zgodne z interfejsem API używanym przez niespecjalistyczne Mapy. (aosp/866053)
Wersja 1.1.0-alpha01
3 grudnia 2018 r.
Zmiany w interfejsie API
- Dodawanie
putIfAbsentdoLongSparseArray,SimpleArrayMapiSparseArrayCompat(aosp/772608) - Dodaj
getOrDefaultdoSimpleArrayMap(aosp/772607) - Dodaj argument
removedo funkcjiLongSparseArray,SimpleArrayMapiSparseArrayCompat. wycofać odpowiednie rozszerzenia KTX dla tej funkcji. (aosp/772482) - Dodaj funkcję
replacez 2 argumentami doLongSparseArray,SimpleArrayMapiSparseArrayCompat(aosp/772483) - Dodaj 3-argumentową funkcję
replacedoLongSparseArray,SimpleArrayMapiSparseArrayCompat(aosp/772484)