2014-11-21 85 views
-6

我有以下列表:如何使用scala組合兩個列表的元素?

val list1 = List(
    (List("pune"),"myname1","myId1", "myAdd1"), 
    (List("pune"),"myname2","myId2", "myAdd1"), 
    (List("pune"),"myname3","myId3", "myAdd3"), 
    (List("mumbai"),"myname2","myId1", "myAdd2") 
) 

val list2 = List(
    ("pune","myAdd1"), 
    ("mumbai","myAdd2") 
) 

我想下面的輸出 -

List(
    (List(pune),"myname1","myId1", "myAdd1"), 
    (List(pune),"myname2","myId2", "myAdd1"), 
    (List("mumbai"),"myname2","myId1", "myAdd2") 
) 

如何獲得上述輸出使用Scala呢?

+2

我不認爲這個例子足以描述你想編碼的邏輯。你能解釋更多嗎? – 2014-11-21 08:10:49

+0

你真的是指小寫「添加」在列表2? – 2014-11-21 08:13:07

+0

@paul:我改正了它。請參閱我的編輯 – Vishwas 2014-11-21 08:14:55

回答

0

我還不確定你想要什麼,但我認爲這是使用list2來篩選元組中的第一個和第四個字段的list1

val list1 = List(
    (List("a1"), "b1", "c1", "d1"), 
    (List("a1"), "b2", "c2", "d1"), 
    (List("a1"), "b3", "c3", "d3"), 
    (List("a2"), "b2", "c1", "d2") 
) 

val list2 = List(
    ("a1", "d1"), 
    ("a2", "d2") 
) 

list1.filter({ 
    case (a::Nil, b, c, d) => 
    list2.contains((a, d)) 
    case _ => 
    false 
}) 

/* 
Result: 
    List(
    (List(a1),b1,c1,d1), 
    (List(a1),b2,c2,d1), 
    (List(a2),b2,c1,d2) 
) 
*/ 
0
val list1 = List(
(List("pune"),"myname1","myId1", "myAdd1"), 

    (List("pune"),"myname2","myId2", "myAdd1"), 

    (List("pune"),"myname3","myId3", "myAdd3"), 

    (List("mumbai"),"myname2","myId1", "myAdd2")) 

val list2 = List(("pune","myAdd1"),("mumbai","myAdd2")) 

list1.filter(x=> list2 contains ((x._1(0), x._4))) 
// List((List(pune),myname1,myId1,myAdd1), 
//  (List(pune),myname2,myId2,myAdd1), 
//  (List(mumbai),myname2,myId1,myAdd2)) 

但實際上這是你之前問了幾個問題,只是一個微小的變化。我希望你能從其他答案中學到足夠的東西,以便能夠自己處理這類問題。