第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Kotlin 將列表轉(zhuǎn)換為地圖

如何使用 Kotlin 將列表轉(zhuǎn)換為地圖

慕少森 2022-07-20 09:58:11
我正在嘗試從列表中構(gòu)建地圖。我的目標(biāo)是比較兩個列表并發(fā)現(xiàn)這兩個列表之間的差異。然后,我想構(gòu)建一個地圖,以便知道我在哪個索引中發(fā)現(xiàn)了差異。我是用 Java 做的,我相信不是很好,但它確實(shí)有效。//I compare the two values for a given index, if value are the same, I set null in my result listList<String> result = IntStream.range(0, list1.size()).boxed()                .map(i -> list1.get(i) != list2.get(i) ? (list1.get(i)  + " != "+ list2.get(i)) : null)                .collect(Collectors.toList());//I filter all the null values, in order to retrieve only the differences with their indexMap<Integer, String> mapResult =            IntStream.range(0, result.size())            .boxed().filter(i-> null != result.get(i))            .collect(Collectors.toMap(i -> i,result::get));這不是最佳的,但它正在工作。如果您對這些代碼行有任何建議,我很樂意接受。我在 Kotlin 中嘗試了兩次復(fù)制這種行為,但我沒有成功使用 map() 構(gòu)造函數(shù)。(我還在學(xué)習(xí)Kotlin,不是很熟悉)。謝謝您的幫助。
查看完整描述

1 回答

?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊

您可以zip在集合中使用函數(shù)來連接兩個元素。該withIndex()函數(shù)有助于將列表轉(zhuǎn)換為元素索引和值對的列表。完整的解決方案可能如下



    val list1 = listOf("a", "b", "c")

    val list2 = listOf("a", "B", "c")


    val diff : Map<Int, String> = list1.withIndex()

        .zip(list2) { (idx,a), b -> if (a != b) idx to "$a != $b" else null}

        .filterNotNull().toMap()

請注意,zip當(dāng)兩個列表中都有元素時,該函數(shù)會進(jìn)行迭代,它將跳過任何列表中可能存在的剩余部分。可以通過使用以下函數(shù)添加空元素來修復(fù)它:



fun <T> List<T>.addNulls(element: T, toSize: Int) : List<T> {

    val elementsToAdd = (toSize - size)

    return if (elementsToAdd > 0) {

        this + List(elementsToAdd) { element }

    } else {

        this

    }

}

并在使用該函數(shù)之前在兩個列表上調(diào)用該zip函數(shù)


查看完整回答
反對 回復(fù) 2022-07-20
  • 1 回答
  • 0 關(guān)注
  • 121 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號