Проверка Scala, если ListBuffer [MyType] содержит один элемент - PullRequest
1 голос
/ 24 мая 2019

У меня есть два класса:

class Item(val description: String, val id: String) 

class ItemList {
  private var items : ListBuffer[Item] = ListBuffer()
}

Как я могу проверить, содержат ли элементы один элемент с описанием = x и id = y?

Ответы [ 3 ]

4 голосов
/ 24 мая 2019

Это будет

list.exists(item => item.description == x && item.id == y)

Если вы также реализуете equals для своего класса (или даже лучше, сделайте его case class, который делает это автоматически), вы можете упростить это до

case class Item(description: String, id: String)
 // automatically everything a val, 
 // you get equals(), hashCode(), toString(), copy() for free
 // you don't need to say "new" to make instances

list.contains(Item(x,y))
1 голос
/ 24 мая 2019

Примерно так:

def containsIdAndDescription(id: String, description: String) = {
   items.exists(item => item.id == id && item.description == description )
}
0 голосов
/ 25 мая 2019

Возможно, подумайте об этих подходах, а также:

//filter will return all elements which obey to filter condition

list.filter(item => item.description == x && item.id == y)

//find will return the fist element in the list

list.find(item => item.description == x && item.id == y) 
...