1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| class User(val name: String, val age: Int) extends Comparable[User] { override def compareTo(o: User): Int = name.compareTo(o.name) }
class User2(val name: String, val age: Int) extends Ordered[User2] { override def compare(that: User2): Int = name.compareTo(that.name) }
object Sort1 { def main(args: Array[String]): Unit = { val l1 = List(1, 2, 3, 4, 9, 7, 5, 8)
l1.sorted
l1.sorted.reverse
val l2 = List(new User("2", 2), new User("1", 1), new User("3", 3))
l2.sorted l2.sorted.reverse val u1 = new User("2", 2) val u2 = new User("1", 1) u1.compareTo(u2)
val l3 = List(new User2("2", 2), new User2("1", 1), new User2("3", 3)) l3.sorted l3.sorted.reverse val u3 = new User2("2", 2) val u4 = new User2("1", 1) u3.compareTo(u4) val bool1 = u3 > u4 val bool2 = u3 < u4 val bool3 = u3 >= u4 val bool4 = u3 <= u4
l1.sorted(Ordering.Int) l1.sorted(Ordering.Int.reverse)
l2.sorted(new Ordering[User] { override def compare(x: User, y: User): Int = x.age - y.age }) implicit val order = new Ordering[User2] { override def compare(x: User2, y: User2): Int = x.age - y.age }
val l5 = l1.sortBy(x => x) val l6 = l1.sortBy(x => x.toDouble) l2.sortBy(_.age)(Ordering.Int.reverse)
l2.sortBy(x => (x.name, x.age))(Ordering.Tuple2(Ordering.String, Ordering.Int.reverse))
l2.sortWith((x, y) => x.age < y.age) l2.sortWith(_.age < _.age)
} }
|