2017-08-31 61 views
0

沒有得到INT我有一個被定義爲星火 - 從地圖的價值階

pLinkGroupsByP: Map[String, Set[(String, Int)]] 

我試圖在對象得到詮釋要返回一個對象,如果它存在,否則返回0因此.getOrElse(0)

val result:Int = 
    Try{ 
    pLinkGroupsByP(Doc.productType.id) 
     .contains(Doc.Group.id,container.containerDoc.GroupOrder) 
     (Doc.Group.id,container.containerDoc.GroupOrder)._2 
    }.getOrElse(0) 
  • (Doc.productType.id)是訪問
  • (Doc.Group.id)是訪問值值部分
  • (container.containerDoc.GroupOrder)是訪問的值的第二部分是我需要的東西被分配到的結果。

但是,無論如何,我只能得到地圖中第一個值的第一個數字。我只需要將該值中的數字分配回此try語句中的結果。

的樣本數據是

Map["pro-ucw32, Set[(PRD-1292, 5)]] 
+0

因此,無論您的數據都是0,或者您有一個例外。 – Marcin

+0

@Marcin我過了零,現在我添加這個 '(Doc.Group.id,container.containerDoc.GroupOrder)._ 2' 它會讓我回數字,但只有第一個數值。 即使它認爲它應該是'5',它也只能讓我回到'7',即使對於'3008'也是如此。請看一下樣本數據圖片 – dedpo

+0

@dedpo您能否請包括Doc的聲明?謝謝 –

回答

0
val tupleToMap = pLinkGroupsByP(Doc.productType.id).toMap 
    tupleToMap(relatedDoc.lkGroup.id).GetorElse(0) 

元組映射轉換值賦給一個元組映射,

relatedDoc.linkGroup.id is a key being mapped and retunred if its a number greater than 1 it will be returned and then a 0 
1

我想你可以得到的結果與簡單的if else

val result:Int = if(pLinkGroupsByP(Doc.productType.id).contains(Doc.Group.id,container.containerDoc.GroupOrder)) container.containerDoc.GroupOrder else 0