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
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.

Tworzenie nowego numeru

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

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 interfejsem API przypominającym mapę
  • MutableScatterSet i ScatterSet – klasa z MutableSet i interfejsem Set-like API
  • MutableObjectList i ObjectList – klasa z interfejsem MutableList 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

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 interfejsem API przypominającym mapę
  • MutableScatterSet i ScatterSet – klasa z MutableSet i interfejsem Set-like API
  • MutableObjectList i ObjectList – klasa z interfejsem MutableList 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 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 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 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()
    • Te wywołania w aplikacji 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, .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)
  • 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ści null 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ą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 artefakcie „collection-ktx”. (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 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 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 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. 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)