新手Scala問題。查找兩個列表(Scala)中的常見項目
我試圖實現接收兩個列表的功能,找到一個共同的項目,不是讓操作和創建新的列表
我有一個案例類
case class weightedFruits(fruits: Set[String], weight: Double)
和兩個列表weightedFruitsList
和filteredWeightedFruitsList
:
// set is sorted
val weightedFruitsList = List(
weightedFruits(Set("banana"), 200),
weightedFruits(Set("banana", "orange"), 180),
weightedFruits(Set("banana", "orange", "apple"), 170),
weightedFruits(Set("feijoa", "fig"), 201))
//filtered List , Set sorted, contains "melon" as last member
val filteredWeightedFruitsList = List(
weightedFruits(Set("banana", "melon"), 250),
weightedFruits(Set("banana", "orange", "melon"), 270),
weightedFruits(Set("banana", "orange", "apple", "melon"), 365))
我想去的每個項目在filteredWeightedFruitsList
,發現相同的項目3210,做一個小的操作,並創建一個新的List[weightedFruits]
我(還沒有成型)代碼:
def conf :Option[List[weightedFruits]] = {
for (filtered <- filteredWeightedFruitsList){
weightedFruitsList.find{
case x if (x.fruits equals filtered.fruits.dropRight(1)) => return weightedFruits(x.fruits, x.weight/filtered.weight)]
case _ => false
}
}
}
有了這個代碼,我有兩個問題: 1)type mismatch; found : Unit required: Option
2)type mismatch; found : weightedFruits required: Option[List[weightedFruits]]
歡迎任何想法。對不起,如果我的問題讓你發瘋...
最後一個問題也許有更有效的方法來完成這項任務?
感謝
也許值得注意的是,套不排序改寫某些領域。爲此,您需要[SortedSets](http://docs.scala-lang.org/overviews/collections/sets.html#sorted-sets) – hasumedic
請您舉一個所需函數的簽名,輸入和輸出的例子?例子'def add1(x:Int):Int',輸入:'add1(42)',輸出:'43'。 –
所需函數輸入兩個'List [weightedFuits]',輸出也是列表。 'def conf(過濾:列表[加權水果],全部:列表[加權水果]):列表[加權水果]' – Toren