基于类型属性的Kotlin返回列表

时间:2018-08-03 12:38:33

标签: kotlin functional-programming

我需要根据某些项目的类型(20种情况中的“ typeA”,“ typeB”,“ typeC”,“ typeD”)提取项目列表。我如何以优雅的方式做到这一点。无需创建不需要的Invalid类型。

在Java上,我将创建一个空列表并有一个foreach,跳过不必要的情况。我不知道如何在kotlin上执行此操作,因为map()需要返回某些内容,并且创建Invalid类型对此不可行。拥有Java解决方案听起来并不正确。

*已编辑

我将举一个例子: 我们有一个甜点列表,我们正在过滤“冰淇淋”和“蛋糕”类型,我只是在下面创建了代码:

private fun getDessertsByType(dessertsFromBackend: List<Dessert>) {
val myList = mutableListOf<Dessert>()
for (item in dessertsFromBackend) {
  if (item.getId() === "ice-cream") {
    myList.add(item)
  }
  if (item.getId() === "cake") {
    myList.add(item)
  } else { //We do not need to care for anything else
    continue
  }
}
}

2 个答案:

答案 0 :(得分:2)

我还没有尝试过,但是请尝试这样做。

dessertsFromBackend.filter { it.id == "ice-cream" || it.id == "cake" }

答案 1 :(得分:1)

map用于基于输入生成新的输出

对于您的示例,我想说的是您实际上要filter输入您的内容:

private fun getDessertsByType(dessertsFromBackend: List<Dessert>) =
    dessertsFromBackend.filter {
        (item.getId() == "ice-cream") 
        || (item.getId() == "cake")
        || ... }
    }
}

请注意,使用when

,您的代码可能看起来更简洁