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

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

在 Kotlin 中解析列表的枚舉

在 Kotlin 中解析列表的枚舉

楊__羊羊 2023-10-13 17:27:02
最終,該方法不會編譯,因為Collectors.toMap()返回Map,而方法簽名需要返回類型為SortedMap。我不知道誤導(dǎo)性的“靜態(tài)上下文”錯誤消息背后的原因;但是當(dāng)我嘗試使用 Gradle 構(gòu)建代碼時,我收到了一條稍微有用的消息。error: incompatible types: inference variable R has incompatible bounds                  .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));                          ^      equality constraints: Map<K,U>      lower bounds: SortedMap<String,String>,ObjectCollectors.toMap()您可能需要接受 a的重載版本Supplier<Map>,以便您可以提供SortedMapfor 輸出。我有一個列表枚舉,定義如下:enum class Test(val type: List<String>){  A(listOf<String>("aa", "ab", "ac")),  B(listOf<String>("bb", "bc", "bd")),  C(listOf<String>("aa", "bb", "dd"));companion object {            fun Search(type: String?): Boolean {                val before = type?.substringBefore(".")?.toUpperCase()?.trim()                val after = type?.substringAfter(".")?.toUpperCase()?.trim()                return values().any { it.name == normalized }            }            fun ListAll(): List<String> {            }    }}我需要執(zhí)行兩個主要操作:Search() 和 ListAll()。我的搜索操作的輸入是像“B.bd”這樣的字符串,我的 ListAll 操作的輸出應(yīng)該是A.aaA.abA.acB.bbB.bcB.bdC.aaC.bbC.dd我是 Kotlin 新手,想知道是否有任何有效的方法來返回它。
查看完整描述

1 回答

?
烙印99

TA貢獻1829條經(jīng)驗 獲得超13個贊

這可能是一個可行的實施方案。將所有枚舉及其類型映射到 aString并將它們存儲為屬性。然后只需使用字符串比較來查找您的搜索輸入:


enum class Test(val type: List<String>) {

    A(listOf("aa", "ab", "ac")),

    B(listOf("bb", "bc", "bd")),

    C(listOf("aa", "bb", "dd"));


    companion object {

        private val normalizedValues = values().flatMap { value ->

                value.type.map { "${value.name}.$it" }

            }

        fun listAll() = normalizedValues

        fun search(type: String?) = normalizedValues.contains(type)

    }

}


fun main() {

    println(Test.listAll())

    println(Test.search("B.bd"))

    println(Test.search("B.ad"))

}

輸出:


[A.aa, A.ab, A.ac, B.bb, B.bc, B.bd, C.aa, C.bb, C.dd]

true

false

(旁注:我簡化了你的代碼,并使用小駝峰命名法作為函數(shù)名稱。你也可以直接使用normalizedValues而不是listAll(),但我決定保留你現(xiàn)有的簽名。)


查看完整回答
反對 回復(fù) 2023-10-13
  • 1 回答
  • 0 關(guān)注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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