Min and Max
Min
import com.twitter.algebird._
// import com.twitter.algebird._
import Operators._
// import Operators._
Min(10) + Min(20) + Min(30)
// res0: com.twitter.algebird.Min[Int] = Min(10)
Max
Example from http://www.michael-noll.com/blog/2013/12/02/twitter-algebird-monoid-monad-for-large-scala-data-analytics/
Max(10) + Max(30) + Max(20)
// res1: com.twitter.algebird.Max[Int] = Max(30)
case class TwitterUser(val name: String, val numFollowers: Int) extends Ordered[TwitterUser] {
def compare(that: TwitterUser): Int = {
val c = this.numFollowers - that.numFollowers
if (c == 0) this.name.compareTo(that.name) else c
}
}
// defined class TwitterUser
Let’s have a popularity contest on Twitter. The user with the most followers wins!
scala> val barackobama = TwitterUser("BarackObama", 40267391)
barackobama: TwitterUser = TwitterUser(BarackObama,40267391)
scala> val katyperry = TwitterUser("katyperry", 48013573)
katyperry: TwitterUser = TwitterUser(katyperry,48013573)
scala> val ladygaga = TwitterUser("ladygaga", 40756470)
ladygaga: TwitterUser = TwitterUser(ladygaga,40756470)
scala> val miguno = TwitterUser("miguno", 731) // I participate, too. Olympic spirit!
miguno: TwitterUser = TwitterUser(miguno,731)
scala> val taylorswift = TwitterUser("taylorswift13", 37125055)
taylorswift: TwitterUser = TwitterUser(taylorswift13,37125055)
scala> val winner: Max[TwitterUser] = Max(barackobama) + Max(katyperry) + Max(ladygaga) + Max(miguno) + Max(taylorswift)
winner: com.twitter.algebird.Max[TwitterUser] = Max(TwitterUser(katyperry,48013573))
scala> assert(winner.get == katyperry)
Documentation Help
We’d love your help fleshing out this documentation! You can edit this page in your browser by clicking this link. These links might be helpful: