2016-04-13 28 views
1

ben Scala içinde (String,Double) tüp listeleriniz olsaydı (List[(String,Double)] yani), nasıl büyük Double değerle tuple alacağı Listesinden büyük sayısını al?Scala: küpe

cevap

5

Hemen kullanmak maxBy:

val list: List[(String, Double)] = List(("a", 2.3), ("b", 3.5), ("c", 8.9)) 
list.maxBy(_._2) 
1

Bunu yapmanın birkaç yolu vardır. Akla gelen tek bir .sortBy yaparak olduğunu (- _._ 2)

val t1 = ("string1", 1) 
val t2 = ("string2", 5) 
val t3 = ("string3", 12) 
val t4 = ("string4", 3) 
val t5 = ("string5", 8) 

val myList = List(t1, t2, t3, t4, t5) 

val largestTuple = myList.sortBy(- _._2).head 

largestTuple: (String, Int) = (string3,12) 
+0

harika çalışıyor, teşekkürler. – riv94

+0

@ marcospereira'nın .maxBy'nin cevabı muhtemelen bunu yapmanın daha iyi bir yoludur. Temelde sortBy'yi ve –

+0

No'yu birleştirir, diğer cevap sortBy/head yapmaz. Sıralamaya gerek yok ve bunu yapmak gereksiz yere yavaş –

1

Ayrıca reduce böyle anlambilim iletebilirsiniz,

xs.reduce((a,v) => if (v._2 > a._2) v else a) 

Yani, listeyi tarayın ve maksimum değeri koruyun. Yine de, maxBy sadeliğe giden yoldur.