sorted.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 65 行

SCALA
65
字号
/*                     __                                               *\**     ________ ___   / /  ___     Scala API                            ****    / __/ __// _ | / /  / _ |    (c) 2006-2007, LAMP/EPFL             ****  __\ \/ /__/ __ |/ /__/ __ |                                         **** /____/\___/_/ |_/____/_/ | |                                         ****                          |/                                          **\*                                                                      */// $Id: Sorted.scala 10880 2007-04-29 16:23:07Z mihaylov $package scala.collection;/** Any collection (including maps) whose keys (or elements) are ordered. * *  @author Sean McDirmid */trait Sorted[K,+A] extends Ranged[K,A] {  /** return as a projection the set of keys in this collection */  def keySet : SortedSet[K];    /** Creates a ranged projection of this collection. Any mutations in the   *  ranged projection will update this collection and vice versa.  Keys   *  are garuanteed to be consistent between the collection and its projection.   *   *  @param from  The lower-bound (inclusive) of the ranged projection.   *               <code>None</code> if there is no lower bound.   *  @param until The upper-bound (exclusive) of the ranged projection.   *               <code>None</code> if there is no upper bound.   */  override def rangeImpl(from: Option[K], until: Option[K]) : Sorted[K,A];  override def from(from: K) = rangeImpl(Some(from), None);  override def until(until: K) = rangeImpl(None, Some(until));  override def range(from: K, until: K) = rangeImpl(Some(from),Some(until));    /** Create a range projection of this collection with no lower-bound.   *  @param to The upper-bound (inclusive) of the ranged projection.   */  def to(to : K): Sorted[K,A] = {    // tough!    val i = keySet.from(to).elements;    if (!i.hasNext) return this;    val next = i.next;    if (next == to) {      if (!i.hasNext) return this;      else return until(i.next);    } else return until(next);  }  protected def hasAll(j : Iterator[K]) : Boolean = {    val i = keySet.elements;    if (!i.hasNext) return !j.hasNext;    var in = i.next;    while (j.hasNext) {      val jn = j.next;      while ({        val n = compare(jn, in);        if (n == 0) false;        else if (n < 0) return false;        else if (!i.hasNext) return false;        else true;      }) in = i.next;    }    return true;  }      }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?