क्या कोटलिन में भागों को विभाजित करने का कोई आसान तरीका है (शायद कुछ लैम्ब्डा)?भागों में विभाजन को विभाजित करें
उदाहरण के लिए:
[1, 2, 3, 4, 5, 6] => [[1, 2], [3, 4], [5, 6]]
क्या कोटलिन में भागों को विभाजित करने का कोई आसान तरीका है (शायद कुछ लैम्ब्डा)?भागों में विभाजन को विभाजित करें
उदाहरण के लिए:
[1, 2, 3, 4, 5, 6] => [[1, 2], [3, 4], [5, 6]]
सूची को देखते हुए: val list = listOf(1, 2, 3, 4, 5, 6)
आप उपयोग कर सकते groupBy
:
list.groupBy { (it + 1)/2 }.map { it.value }
या अगर अपने मूल्यों नहीं हैं संख्या आप पहले उन्हें एक इंडेक्स असाइन कर सकते हैं:
list.withIndex()
.groupBy { it.index/2 }
.map { it.value.map { it.value } }
या आप कुछ आवंटन को बचाने के लिए आप foldIndexed साथ थोड़ा और मैनुअल रास्ता तय कर सकते हैं चाहते हैं, तो:
list.foldIndexed(ArrayList<ArrayList<Int>>(list.size/2)) { index, acc, item ->
if (index % 2 == 0) {
acc.add(ArrayList(2))
}
acc.last().add(item)
acc
}
['groupBy'] के लिए (https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/group-by.html)," लौटा नक्शा मूल संग्रह से उत्पादित चाबियों के प्रवेश पुनरावृत्ति आदेश को संरक्षित करता है। " इस प्रकार, आपका पहला उदाहरण 'list.groupBy {(it + 1)/2} .values' के लिए सरलीकृत किया जा सकता है। – mfulton26
कोटलिन के पास ['इंडेक्स 'के साथ] (https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/with-index.html) है जो आपका दूसरा उदाहरण थोड़ा और पठनीय भी बना सकता है:' सूची .withIndex()। समूह द्वारा {it.index/2} .values.map {it.map {it.value}} '। – mfulton26
@ mfulton26 नोटिस के लिए धन्यवाद, तदनुसार जवाब अपडेट किया गया। – miensol
एपीआई का कहना है एक GroupBy समारोह है, जो आप चाहते क्या करना चाहिए नहीं है।
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/group-by.html
या sublist का उपयोग करें और यह अपने आप को तोड़ने के
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/sub-list.html
Kotlin 1.2 जब से तुम stdlib (https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/chunked.html) से Iterable<T>.chunked(size: Int): List<List<T>>
फ़ंक्शन का उपयोग कर सकते हैं।
एक सुविधा Kotlin 1.1 के लिए अनुरोध किया है कि: https://github.com/Kotlin/KEEP/blob/master/proposals/stdlib/window-sliding.md – succcubbus
संभावित डुप्लिकेट: http://stackoverflow.com/q/ 34498368/3255152 – mfulton26
यदि आप _two_ भागों में विभाजन करना चाहते हैं, तो https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/partition.html वह करना होगा जो आप करना चाहते हैं। जैसे 'list.partition {x -> x <4}' – carpeliam