kotlin.collections flaten() 사용 방법

14280 단어 Kotlintech
kotlin.collectionsflatten()에function이 있습니다.
공식 문서에는'제공된 컬렉션 그룹의 모든 컬렉션 그룹에서 모든 요소의 단일 목록을 되돌려줍니다'라고 기재되어 있다.
끼워 넣은 모음집 그룹을 평탄한 목록으로 변환하는 데 사용되는 function이다.
장면을 사용하기 위해 라벨 형식으로 매달 표시되는 데이터가 있기 때문에 편집, 총결산을 고려하여 이 데이터를 저장할 수 있다.
다음은 간단한 날짜 데이터의 예를 들어 플러그인 목록flatten()을 적용한 후 목록 구조가 어떻게 변화하는지 보여주는 견본이다.
// 日付クラス
data class Date(val month: Int, val day: Int)

// 月ごとの日付リスト
val january: List<Date> = (1..31).map { Date(1, it) }
val february: List<Date> = (1..28).map { Date(2, it) }
val march: List<Date> = (1..31).map { Date(3, it) }
val april: List<Date> = (1..30).map { Date(4, it) }
val may: List<Date> = (1..31).map { Date(5, it) }
val june: List<Date> = (1..30).map { Date(6, it) }
val july: List<Date> = (1..31).map { Date(7, it) }
val august: List<Date> = (1..31).map { Date(8, it) }
val september: List<Date> = (1..30).map { Date(9, it) }
val october: List<Date> = (1..31).map { Date(10, it) }
val november: List<Date> = (1..30).map { Date(11, it) }
val december: List<Date> = (1..31).map { Date(12, it) }

// 月ごとの日付リストのリスト = 1年間の日付リスト
val annualDateList: List<List<Date>> = listOf(january, february, march, april, may, june, july, august, september, october, november, december)

/********** ネストされている日付データ **********/
println(annualDateList)
// => [[Date(month=1, day=1), Date(month=1, day=2), …, Date(month=1, day=31)], [Date(month=2, day=1), …, Date(month=12, day=31)]]

println("1年: ${annualDateList.size}ヶ月")
// => 1年: 12ヶ月

annualDateList.forEach { println("${it.first().month}月: ${it.size}日") }
// => 1月: 31日
// => 2月: 28日
// => …
// => 12月: 31日

/********** フラットな日付データ **********/
println(annualDateList.flatten())
// => [Date(month=1, day=1), Date(month=1, day=2),  …, Date(month=1, day=31), Date(month=2, day=1), …, Date(month=12, day=31)]
// これは `annualDateList.flatMap { it }` と同じ

println("1年: ${annualDateList.flatten().size}日")
// => 1年: 365日

좋은 웹페이지 즐겨찾기