2016-04-13 10 views

Antwort

5

Nur maxBy verwenden:

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

Es gibt ein paar Möglichkeiten, dies zu tun. Derjenige, der in den Sinn kommt, ist durch eine .sortBy tun (- _._ 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

funktioniert super, danke. – riv94

+0

@ marcospereiras Antwort auf .maxBy ist wahrscheinlich ein besserer Weg, es zu tun. Es kombiniert im Wesentlichen sortBy und Kopf –

+0

Nein, die andere Antwort nicht sortBy/Kopf. Es gibt keine Notwendigkeit zu sortieren, und dies ist unnötig langsam –

1

Auch reduce die Semantik wie diese vermitteln können,

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

Nämlich scannen Sie die Liste und bewahren Sie den maximalen Wert. Trotzdem ist maxBy der Weg zur Einfachheit.

Verwandte Themen