【问题标题】:How to check if element exist in three lists using scala?如何使用scala检查三个列表中是否存在元素?
【发布时间】:2014-11-17 21:22:41
【问题描述】:

我有以下三个列表:

List((List(vmnic2),"VM Network",10,"vSwitch0"), (List("vmnic2"),"Management Network",0,"vSwitch0"))
List(List("vmnic2"))
List("VM Network 2", "VM Network 3", "VM Network")

我想做以下事情:

1) 我想检查第一个列表是否包含第二个列表和 2) 第三个列表中的任何元素与第一个列表中的任何元素中的第二个值匹配。

从上面三个列表中我想输出为

List(List("vmnic2"),"VM Network",10,"vSwitch0")

如何使用 scala 获得以上输出??

【问题讨论】:

  • 您是否考虑过使用案例类而不是列表?它们似乎比这些异构(Any Lists)工作得更好。
  • 实际上我正在使用案例类。对于这三个列表,我有三个不同的类..
  • 您的示例不是有效的 scala 代码。这让人们很难理解您想要什么并为您提供帮助。
  • 第一个查询中的“包含”是什么意思?第二个列表的头部是否显示为第一个列表中一个列表的第一个元素?
  • @paul 你是对的..

标签: scala


【解决方案1】:

试试这个:

list1.filter(e =>
  e._1.intersect(list2(0)) == list2(0)  // check if first element contains second list
    && list3.contains(e._2))            // check if third list contains second element

【讨论】:

  • 不是在你的例子中它不是。如果不知道它包含某物的列表,那就有点困难了。请添加到您的示例中足以证明它是 List[Any]
  • @Vishwas 那么first list contains second list是什么意思?
  • 如果 List[Any] 尝试对它包含的任何列表进行模式匹配,则会被类型擦除所击败。我认为您的设计需要重新审视。
  • @sergey:如果我将 list2 更改为 List(("vmnic2","vSwitch0"),("vmnic1",vSwitch1)),如何匹配。简而言之,我如何将上面给定的列表匹配到 list1 而不是使用 list2(0)) == list2(0)
猜你喜欢
  • 1970-01-01
  • 2020-07-19
  • 2019-10-04
  • 2021-12-17
  • 2011-08-02
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
相关资源
最近更新 更多