Kotlin - Сравните два списка с запусками с () - PullRequest
0 голосов
/ 18 июня 2019

Я бы хотел лучший способ перебрать keyList, и если ключ начинается с ключа компаратора, чтобы получить эту строку компаратора и добавить ее на карту в качестве заголовка, как, например, MutableMap> ... список все ключевые элементы, которые соответствуют компаратору ..

keysList: List<String>
val comparators = listOf("error", "customer", "custom", "feature")

Пока я делаю это так

private fun addToMap(key: String, attributeMap: MutableMap<String, MutableList<String>>) {
        val list: MutableList<String> = attributeMap[getHeader(key)] ?: mutableListOf()
        list.add(key)
        attributeMap[getHeader(key)] = list
    }


    private fun getHeader(key: String): String {
        val compareMap = mapOf("error" to "Error Attributes", "customer" to "Customer Attributes",
            "custom" to "Customer Attributes", "feature" to "Feature Attributes", "request.header" to "Request Header Attributes",
            "request.parameter" to "Request Parameter Attributes", "request" to "Other Request Attributes")
        val defaultKeys = listOf("error.expected", "error.class", "error.message", "host", "httpResponseCode", "transactionName", "transactionUiName") // contains

        for ((k, v) in compareMap) {
            return if (key.startsWith(k)) {
                v
            } else if (key in defaultKeys) {
                "Error Attributes"
            } else {
                "Custom Attributes"
            }
        }
        return "Custom Attributes"
    }

1 Ответ

0 голосов
/ 18 июня 2019

Вы можете использовать функцию .any следующим образом:

if (comparators.any { key.startsWith(it) })
    // add to map
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...