यदि आप कोटलिन का उपयोग करते हैं, तो आप उदाहरण के लिए विस्तार कार्यों का उपयोग कर सकते हैं:
fun <T> LongSparseArray<T>.valuesIterator(): Iterator<T> {
val nSize = this.size()
return object : Iterator<T> {
var i = 0
override fun hasNext(): Boolean = i < nSize
override fun next(): T = valueAt(i++)
}
}
fun <T> LongSparseArray<T>.keysIterator(): Iterator<Long> {
val nSize = this.size()
return object : Iterator<Long> {
var i = 0
override fun hasNext(): Boolean = i < nSize
override fun next(): Long = keyAt(i++)
}
}
fun <T> LongSparseArray<T>.entriesIterator(): Iterator<Pair<Long, T>> {
val nSize = this.size()
return object : Iterator<Pair<Long, T>> {
var i = 0
override fun hasNext(): Boolean = i < nSize
override fun next() = Pair(keyAt(i), valueAt(i++))
}
}
आप चाहें तो एक सूची में भी बदल सकते हैं। उदाहरण:
sparseArray.keysIterator().asSequence().toList()
मुझे लगता है remove
कि LongSparseArray
स्वयं (इट्रेटर पर नहीं) का उपयोग करके आइटम हटाना भी सुरक्षित हो सकता है , क्योंकि यह आरोही क्रम में है।
संपादित करें: संग्रह-केटीएक्स ( यहां उदाहरण ) का उपयोग करके एक आसान तरीका है । यह मेरे द्वारा लिखे गए, कार्यरूप में, उसी तरह से लागू किया गया है।
ग्रेड के लिए यह आवश्यक है:
implementation 'androidx.core:core-ktx:#'
implementation 'androidx.collection:collection-ktx:#'
यहाँ LongSparseArray के लिए उपयोग है:
val sparse= LongSparseArray<String>()
for (key in sparse.keyIterator()) {
}
for (value in sparse.valueIterator()) {
}
sparse.forEach { key, value ->
}
और उन लोगों के लिए जो जावा का उपयोग करते हैं, आप उदाहरण के लिए LongSparseArrayKt.keyIterator
, LongSparseArrayKt.valueIterator
और LongSparseArrayKt.forEach
, का उपयोग कर सकते हैं । अन्य मामलों के लिए भी।