Kolekcja

  
Zmniejsz wpływ na pamięć istniejących i nowych kolekcji, które są niewielkie.
Najnowsza aktualizacja Wersja stabilna Kandydat do wydania Wersja Beta Wydanie alfa
24 lipca 2024 r. 1.4.2 - - -

Deklarowanie zależności

Aby dodać zależność od kolekcji, musisz dodać repozytorium Google Maven do swojej w projektach AI. Zapoznaj się z repozytorium Google Maven. .

Dodaj zależności artefaktów, których potrzebujesz w pliku build.gradle aplikacji lub modułu:

Odlotowe

dependencies {
    def collection_version = "1.4.2"
    implementation "androidx.collection:collection:$collection_version"
}

Kotlin

dependencies {
    val collection_version = "1.4.2"
    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 problemy jak ulepszyć tę bibliotekę. Przyjrzyj się istniejące problemy w tej bibliotece, zanim utworzysz nową. Możesz zagłosować nad istniejącym problemem przez klikając przycisk gwiazdki.

Tworzenie nowego numeru

Zobacz dokumentację narzędzia Issue Tracker. .

Wersja 1.4

Wersja 1.4.2

24 lipca 2024 r.

Usługa androidx.collection:collection-*:1.4.2 została zwolniona. Wersja 1.4.2 zawiera te zatwierdzenia.

Nowe funkcje

  • Obejmuje dodatkowe cele wieloplatformowe Kotlin: watchos, tvos, linuxArm64. (b/352543988)

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

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 i ScatterMap – zajęcia z MutableMap i Interfejs API podobny do mapy
  • MutableScatterSet i ScatterSet – zajęcia z MutableSet i Interfejs API typu set-like
  • MutableObjectList i ObjectList – zajęcia z MutableList i Interfejs API przypominający 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

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ędziu ObjectList, które z powodu IndexOutOfBoundsException 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 jak FloatFloatMap.
  • Konwertuj metody removeIf w zbiorach podstawowych, np. MutableFloatFloatMap, na wbudowane. Dzięki temu funkcja lambda dla parametru removeIf 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 i ScatterMap – zajęcia z MutableMap i Interfejs API podobny do mapy
  • MutableScatterSet i ScatterSet – zajęcia z MutableSet i Interfejs API typu set-like
  • MutableObjectList i ObjectList – zajęcia z MutableList i Interfejs API przypominający 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 do MutableList<Int|Float|Long>. Istnieje również uprawnienie tylko do odczytu ([Int|Float|Long]List). Na przykład IntList może zawierać liczby całkowite.
  • Mutable[Int|Float|Long]Set – klasy z interfejsem API podobnym do MutableSet<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 do Mutable<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 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.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 od collection:collection-ktx na collection:collection, bo zasada collection-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 zamiast AbstractMutableCollection stosuje teraz MutableCollections, aby umożliwić bardziej oszczędzającą pamięć implementację funkcji toArray (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 korzystać z 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)
  • Platforma CircularIntArray jest teraz dostępna na platformach innych niż Jvm z poziomu wspólnego artefaktu (I3d8ef, b/228344943)
  • Platforma LongSparseArray jest teraz dostępna na platformach innych niż Jvm z poziomu 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 zakres AbstractMutableCollection 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 nie T?:
      • ArraySet<T>.contains(null)
      • ArraySet<T>.add(null)
      • ArraySet<T>.remove(null)
    • Te wywołania zwracają typ zwracany T?, a nie T!:
      • ArraySet<T?>.valueAt(n)
      • ArraySet<T?>.removeAt(n)
      • ArraySet<T?>().iterator().next()
    • Następujące wywołania w Kotlin nie są już możliwe:
      • set.toArray() – użyj usługi set.toTypedArray()
      • set.toArray(array) – użyj usługi set.forEachIndexed(array::set)
  • 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 API SparseArrayCompat 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, Znalezione elementy: .indexOf(), .indexOfNull() i .indexOfValue() private – technicznie jest to niekompatybilna zmiana binarna, ale odzwierciedla zamierzoną widoczność tych pól i jest najbliższy co można osiągnąć w Kotlin, ponieważ nie ma możliwości określenia widoczności prywatnej pakietu.
    • Wartości null w niektórych typach są teraz prawidłowo zdefiniowane, metody to: .getOrDefault, .keyAt, .valueAt, .setValueAt, .put, .putIfAbsent, .removeAt, .replace.
    • Dla użytkowników Kotlin funkcja .isEmpty() jest teraz dostępna tylko jako funkcja, a nie także przez dostęp do usługi. (I271b7, b/182813986)
  • Przekonwertuj CircularArray na Kotlin. Ważne zmiany:

    • Poprawia wartość null swoich ogólnikowych do wartości niezerowej, która wcześniej była ustawiona na wartość null ale jest wymuszone we wszystkich publicznych interfejsach API.
    • Dzięki współpracy Kotlin w Javie wcześniej można było uzyskać dostęp do pewnych metod jako właściwości lub funkcji. Jednak aby zmniejszyć przy zachowaniu zgodności plików binarnych było konieczne ich usunięcie, co jest zmianą niezgodną ze źródłem. Zagrożony połączenia to: .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 SparseArrayCompat.valueAt() została wprowadzona drobna zmiana w działaniu, która nie zwraca już nieprawidłowo wartości null w przypadku niezainicjowanych wywołań z w granicach size(), ale w ramach podanej początkowej pojemności.

    Ta zmiana wprowadza również prawidłową wartość null w przypadku niektórych typów, które które zostały wcześniej pominięte.

    • .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ąc entrySet().toArray(), remove(), removeAll() i retainAll() 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ąc entrySet().toArray(), remove(), removeAll() i retainAll() 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 i isNotEmpty w kolekcji „collection-ktx” artefaktu. (Aosp/866529)

Zmiany interfejsu API

  • Dodaj putIfAbsent do usług LongSparseArray, SimpleArrayMap i SparseArrayCompat (aosp/772608)
  • Dodaj: getOrDefault do: SimpleArrayMap (aosp/772607)
  • Dodaj dwuargument remove do funkcji LongSparseArray, SimpleArrayMap i SparseArrayCompat. Wycofaj odpowiednie rozszerzenia KTX w celu korzystania z tej funkcji. (Aosp/772482)
  • Dodaj dwuargument replace do elementów LongSparseArray, SimpleArrayMap i SparseArrayCompat (aosp/772483)
  • Dodaj 3-argumentowy replace do elementów LongSparseArray, SimpleArrayMap i SparseArrayCompat (aosp/772484)
  • Wycofaj zbędne metody delete. Metoda remove 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 systemie SimpleArrayMap.class zamiast ArrayMap.class. Dzięki temu jeśli używasz tylko pliku SimpleArrayMap, narzędzie ArrayMap 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 i isNotEmpty w kolekcji „collection-ktx” artefaktu. (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 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 systemie SimpleArrayMap.class zamiast ArrayMap.class. Dzięki temu jeśli używasz tylko pliku SimpleArrayMap, narzędzie ArrayMap 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 maszynie wirtualnej ArraySet oznaczona wcześniej jako @RestrictTo(LIBRARY_GROUP) zmieniono na @RestrictTo(LIBRARY_GROUP_PREFIX). Ma to na celu wsparcie historycznych są używane w innych bibliotekach AndroidaX, które są teraz przypisane do różnych identyfikatorów grup Maven. Ten zostanie upubliczniona lub zostanie usunięta w wersji 1.1.0-alfa, ponieważ inne Biblioteki AndroidaX nie powinny otrzymywać specjalnych interfejsów API, z których nie korzystają 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. Metody remove 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ług LongSparseArray, SimpleArrayMap i SparseArrayCompat (aosp/772608)
  • Dodaj: getOrDefault do: SimpleArrayMap (aosp/772607)
  • Dodaj dwuargument remove do funkcji LongSparseArray, SimpleArrayMap i SparseArrayCompat. Wycofaj odpowiednie rozszerzenia KTX w celu korzystania z tej funkcji. (Aosp/772482)
  • Dodaj dwuargument replace do elementów LongSparseArray, SimpleArrayMap i SparseArrayCompat (aosp/772483)
  • Dodaj 3-argumentowy replace do elementów LongSparseArray, SimpleArrayMap i SparseArrayCompat (aosp/772484)