컬렉션
최근 업데이트 | 공개 버전 | 출시 후보 | 베타 버전 | 알파 버전 |
---|---|---|---|---|
2022년 7월 27일 | 1.2.0 | - | - | 1.3.0-alpha02 |
종속 항목 선언
Collection의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용을 알아보려면 Google Maven 저장소를 읽어보세요.
다음과 같이 앱 또는 모듈의 build.gradle
파일에 필요한 아티팩트의 종속 항목을 추가합니다.
Groovy
dependencies { def collection_version = "1.2.0" // Java language implementation implementation "androidx.collection:collection:$collection_version" // Kotlin implementation "androidx.collection:collection-ktx:$collection_version" }
Kotlin
dependencies { val collection_version = "1.2.0" // Java language implementation implementation("androidx.collection:collection:$collection_version") // Kotlin implementation("androidx.collection:collection-ktx:$collection_version") }
종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
버전 1.3.0
버전 1.3.0-alpha02
2022년 7월 27일
androidx.collection:collection:1.3.0-alpha02
및 androidx.collection:collection-ktx:1.3.0-alpha02
가 출시되었습니다. 버전 1.3.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
- 이제 일반 아티팩트의 jvm 외의 플랫폼에서
SparseArrayCompat
를 사용할 수 있습니다(Ic9bd0, b/219589118, b/228347315). - 이제 일반 아티팩트의 jvm 외의 플랫폼에서
CircularIntArray
를 사용할 수 있습니다(I3d8ef, b/228344943). - 이제 일반 아티팩트의 jvm 외의 플랫폼에서
LongSparseArray
를 사용할 수 있습니다(I73149, b/228347315).
버전 1.3.0-alpha01
2022년 6월 29일
androidx.collection:collection:1.3.0-alpha01
및 androidx.collection:collection-ktx:1.3.0-alpha01
이 출시되었습니다. 버전 1.3.0-alpha01에 포함된 커밋을 확인하세요.
새로운 기능
collection-ktx
확장 프로그램을 기본 컬렉션 아티팩트androidx.collection:collection
으로 이전했습니다. 이 변경사항으로 인해 기존 사용자의 호환성을 계속 유지하면서 -ktx 종속 항목 없이도 Kotlin 사용자가 기존 -ktx 확장 프로그램에 액세스할 수 있습니다. 이러한 확장 프로그램을 별도의 -ktx 아티팩트로 유지하는 것은 더 이상 유용하지 않습니다. 주요 아티팩트가 Kotlin으로 이동했기 때문입니다(I6eef2).
API 변경사항
- 이제
ArraySet
가AbstractMutableCollection
을 확장하며 더 이상 Collection 인터페이스를 직접 구현하지 않습니다(If6da0, b/230860589). ArraySet
를 Kotlin으로 변환했습니다. 더 엄격한 입력으로 인해 일부 Kotlin 호출이 더 이상 컴파일되지 않을 수 있습니다(Id68c1, b/230860589).- 다음 호출은 인수 유형이
T?
가 아닌T
입니다.ArraySet<T>.contains(null)
ArraySet<T>.add(null)
ArraySet<T>.remove(null)
- 다음 호출은 반환 유형이
T!
가 아닌T?
입니다.ArraySet<T?>.valueAt(n)
ArraySet<T?>.removeAt(n)
ArraySet<T?>().iterator().next()
- 다음 호출은 Kotlin에서 더 이상 실행할 수 없습니다.
set.toArray()
-set.toTypedArray()
를 사용합니다.set.toArray(array)
-set.forEachIndexed(array::set)
를 사용합니다.
- 다음 호출은 인수 유형이
SparseArrayCompat
의 오버로드된 생성자를 Kotlin 사용자의 선택적 인수로 결합합니다(If8407, b/227474719).SparseArrayCompat.get(key, defaultValue).
의 연산자 문법을 삭제합니다. 이는 여전히.get(key)
의 연산자 문법을 허용하지만SparseArrayCompat
의 API 노출 영역을 이 라이브러리의 다른 클래스와 더 정확히 정렬합니다(I9a38d).LongSparseArray
확장 프로그램을 기본 아티팩트 androidx.collection:collection으로 이전합니다. 이 변경사항으로 인해 기존 사용자의 호환성을 계속 유지하면서 -ktx 종속 항목 없이도 Kotlin 사용자가 기존 -ktx 확장 프로그램에 액세스할 수 있습니다. 이러한 확장 프로그램을 별도의 -ktx 아티팩트로 유지하는 것은 더 이상 유용하지 않습니다. 주요 아티팩트가 Kotlin으로 이동했기 때문입니다(I8659a).LongSparseArray
를 Kotlin으로 변환합니다. 이 변경사항으로 인해 유형에 명시적 nullity가 추가되며 이는 바이너리 호환 변경이지만 소스 비호환성을 유발할 수 있습니다. 특히 *.isEmpty
는 더 이상 속성으로 액세스할 수 없으며 Kotlin의 함수 호출.isEmpty()
로 액세스해야 합니다(Idfd0f).SimpleArrayMap
을 Kotlin으로 변환합니다. 이 변경사항으로 인해 몇 가지 호환되지 않는 변경사항이 발생합니다. 자바-Kotlin 상호 운용성과 소스에서 유형의 nullity를 올바르게 정의하는 기능 때문입니다.- 패키지 비공개 API
.mSize
,.mArray
,.mHashes
,.indexOf()
,.indexOfNull()
,.indexOfValue()
를 비공개로 설정했습니다. 이는 기술적으로 바이너리 비호환 변경이지만 이러한 필드의 의도된 가시성을 반영하며 Kotlin에서 달성할 수 있는 가장 가까운 부분입니다. 패키지 비공개 가시성을 지정하는 방법이 포함되어 있지 않기 때문입니다. - 이제 일부 유형의 nullity가 올바르게 정의되었습니다. 영향을 받는 메서드는 다음과 같습니다.
.getOrDefault
,.keyAt
,.valueAt
,.setValueAt
,.put
,.putIfAbsent
,.removeAt
,.replace
- Kotlin 사용자의 경우 이제
.isEmpty()
는 속성 액세스를 통해서가 아니라 함수로만 사용할 수 있습니다(I271b7, b/182813986).
- 패키지 비공개 API
CircularArray
를 Kotlin으로 변환합니다. 주요 변경사항은 다음과 같습니다.- 제네릭의 nullity가 null이 아닌 것이 되도록 수정합니다. 이는 이전에는 선언할 수 없었지만 모든 공개 API에서 시행되었습니다.
- Kotlin의 자바 상호 운용성으로 인해 이전에는 속성이나 함수로 특정 메서드에 액세스할 수 있었습니다. 그러나 바이너리 호환성을 유지하면서 중복을 줄이기 위해 소스와 호환되지 않는 변경사항을 삭제해야 했습니다. 영향을 받는 호출은
.isEmpty
,.getLast()
,.getFirst()
입니다. (Ifffac)
CircularIntArray
를 Kotlin으로 변환합니다. Kotlin의 자바 상호 운용성으로 인해 이전에는 속성이나 함수로 특정 메서드에 액세스할 수 있었습니다. 그러나 바이너리 호환성을 유지하면서 중복을 줄이기 위해 소스와 호환되지 않는 변경사항을 삭제해야 했습니다. 영향을 받는 호출은.isEmpty
,.getLast()
,.getFirst()
입니다. (Ie36ce)LruCache
를 Kotlin으로 변환합니다. (Ia2f19)SparseArrayCompat
를 Kotlin으로 변환합니다(If6fe8).작은 동작 변경사항이
SparseArrayCompat.valueAt()
에 추가되어size()
경계 밖에서 그러나 제공된 초기 용량 내에서 초기화되지 않은 호출에 관해 더 이상 잘못null
을 반환하지 않습니다이 변경으로 인해, 이전에 누락되었던 일부 유형의 올바른 nullity도 도입되었습니다.
.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)
버전 1.2.0
버전 1.2.0
2021년 12월 1일
androidx.collection:collection:1.2.0
및 androidx.collection:collection-ktx:1.2.0
이 출시되었습니다. 버전 1.2.0에 포함된 커밋을 확인하세요.
1.1.0 이후 중요 변경사항
- 배열 생성자를
ArraySet
에 추가했습니다. (Id7f19) entrySet().toArray()
,remove()
,removeAll()
,retainAll()
을 구현하고entrySet().addAll()
구현을 삭제하여entrySet()
API를 준수하도록 합니다. (I5d505)
버전 1.2.0-rc01
2021년 11월 17일
androidx.collection:collection:1.2.0-rc01
및 androidx.collection:collection-ktx:1.2.0-rc01
이 출시되었습니다. 버전 1.2.0-rc01에 포함된 커밋을 확인하세요.
API 변경사항
- 이전 베타에서 변경된 사항 없음
버전 1.2.0-beta01
2021년 10월 13일
androidx.collection:collection:1.2.0-beta01
및 androidx.collection:collection-ktx:1.2.0-beta01
이 출시되었습니다. 버전 1.2.0-beta01에 포함된 커밋을 확인하세요.
버그 수정
entrySet().toArray()
,remove()
,removeAll()
,retainAll()
을 구현하고entrySet().addAll()
구현을 삭제하여entrySet()
API를 준수하도록 합니다. (I5d505)
버전 1.2.0-alpha01
2020년 12월 16일
androidx.collection:collection:1.2.0-alpha01
및 androidx.collection:collection-ktx:1.2.0-alpha01
이 출시되었습니다. 버전 1.2.0-alpha01에 포함된 커밋을 확인하세요.
API 변경사항
- 배열 생성자를
ArraySet
에 추가했습니다. (Id7f19)
버전 1.1.0
버전 1.1.0
2019년 6월 5일
androidx.collection:collection:1.1.0
및 androidx.collection:collection-ktx:1.1.0
이 출시되었습니다. 1.1.0에 포함된 커밋은 여기에서 확인할 수 있습니다.
다음은 1.0.0에서 1.1.0으로 변경된 사항을 요약한 내용입니다.
새로운 기능
- 'collection-ktx' 아티팩트의
contains
및isNotEmpty
함수에서 더 효율적인 구현을 사용합니다. (aosp/866529)
API 변경사항
LongSparseArray
,SimpleArrayMap
,SparseArrayCompat
에putIfAbsent
를 추가합니다. (aosp/772608)SimpleArrayMap
에getOrDefault
를 추가합니다. (aosp/772607)LongSparseArray
,SimpleArrayMap
,SparseArrayCompat
에 2인수remove
를 추가합니다. 이 기능에 상응하는 KTX 확장 프로그램을 지원 중단합니다. (aosp/772482)LongSparseArray
,SimpleArrayMap
,SparseArrayCompat
에 2인수replace
를 추가합니다. (aosp/772483)LongSparseArray
,SimpleArrayMap
,SparseArrayCompat
에 3인수replace
를 추가합니다. (aosp/772484)- 중복되는
delete
메서드를 지원 중단합니다.remove
메서드는 동일한 API 및 기능을 제공하며 특수화되지 않은 지도에서 사용되는 API와 일치합니다. (aosp/866053)
버그 수정
ArrayMap.class
대신SimpleArrayMap.class
에서 내부 글로벌 어레이 캐시를 동기화하도록SimpleArrayMap
을 변경했습니다. 따라서SimpleArrayMap
만 사용 중인 경우 코드 축소 도구를 사용하여ArrayMap
을 삭제할 수 있습니다. (aosp/934557)
버전 1.1.0-rc01
2019년 5월 7일
androidx.collection:collection:1.1.0-rc01
및 androidx.collection:collection-ktx:1.1.0-rc01
이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- 'collection-ktx' 아티팩트의
contains
및isNotEmpty
함수에서 더 효율적인 구현을 사용합니다. (aosp/866529)
버전 1.1.0-beta01
2019년 4월 3일
androidx.collection:collection:1.1.0-beta01
및 androidx.collection:collection-ktx:1.1.0-beta01
이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
API 변경사항
- alpha03 출시 노트에
@RestrictTo
값이 변경된 것으로 설명된 메서드가 삭제되었습니다. 이 메서드는 AndroidX 라이브러리에서 사용되지 않았으며(현재 또는 이전), 공개 API에서 누락된 기능을 제공하지 않았습니다.
버그 수정
ArrayMap.class
대신SimpleArrayMap.class
에서 내부 글로벌 어레이 캐시를 동기화하도록SimpleArrayMap
을 변경했습니다. 따라서SimpleArrayMap
만 사용 중인 경우 코드 축소 도구를 사용하여ArrayMap
을 삭제할 수 있습니다. (aosp/934557)
버전 1.1.0-alpha03
2019년 3월 13일
androidx.collection:collection:1.0.0-alpha03
및 androidx.collection:collection-ktx:1.0.0-alpha03
이 출시되었습니다.
이 버전에 포함된 커밋의 전체 목록은 여기에서 확인할 수 있습니다.
API 변경사항
- 이전에
@RestrictTo(LIBRARY_GROUP)
로 표시되던ArraySet
의 메서드가@RestrictTo(LIBRARY_GROUP_PREFIX)
로 변경되었습니다. 이는 이제 다른 Maven 그룹 ID에 있는 다른 AndroidX 라이브러리의 방문 기록 사용을 지원하기 위한 것입니다. 다른 AndroidX 라이브러리에서 다른 개발자가 가져오지 않는 특수 API를 가져오면 안 되므로 이 메서드는 1.1.0-alpha04에서 공개되거나 삭제됩니다.
버전 1.1.0-alpha02
2019년 1월 30일
androidx.collection:collection 1.1.0-alpha02
및 androidx.collection:collection-ktx 1.1.0-alpha02
가 출시되었습니다.
API 변경사항
- 중복되는
delete
메서드를 지원 중단합니다.remove
메서드는 동일한 API 및 기능을 제공하며 특수화되지 않은 지도에서 사용되는 API와 일치합니다. (aosp/866053)
버전 1.1.0-alpha01
2018년 12월 3일
API 변경사항
LongSparseArray
,SimpleArrayMap
,SparseArrayCompat
에putIfAbsent
를 추가합니다. (aosp/772608)SimpleArrayMap
에getOrDefault
를 추가합니다. (aosp/772607)LongSparseArray
,SimpleArrayMap
,SparseArrayCompat
에 2인수remove
를 추가합니다. 이 기능에 상응하는 KTX 확장 프로그램을 지원 중단합니다. (aosp/772482)LongSparseArray
,SimpleArrayMap
,SparseArrayCompat
에 2인수replace
를 추가합니다. (aosp/772483)LongSparseArray
,SimpleArrayMap
,SparseArrayCompat
에 3인수replace
를 추가합니다. (aosp/772484)