Skip to content

Commit f393f0b

Browse files
committed
optimize immutable.TreeSet#{max, min}
1 parent ade16df commit f393f0b

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

library/src/scala/collection/immutable/TreeSet.scala

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,22 @@ final class TreeSet[A] private (tree: RB.Tree[A, Unit])(implicit val ordering: O
6868
override def tail = new TreeSet(RB.delete(tree, firstKey))
6969
override def init = new TreeSet(RB.delete(tree, lastKey))
7070

71+
override def min[A1 >: A](implicit ord: Ordering[A1]): A = {
72+
if ((ord eq ordering) && nonEmpty) {
73+
head
74+
} else {
75+
super.min(ord)
76+
}
77+
}
78+
79+
override def max[A1 >: A](implicit ord: Ordering[A1]): A = {
80+
if ((ord eq ordering) && nonEmpty) {
81+
last
82+
} else {
83+
super.max(ord)
84+
}
85+
}
86+
7187
override def drop(n: Int) = {
7288
if (n <= 0) this
7389
else if (n >= size) empty

0 commit comments

Comments
 (0)