bufferwrapper.scala

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

SCALA
53
字号
/*                     __                                               *\**     ________ ___   / /  ___     Scala API                            ****    / __/ __// _ | / /  / _ |    (c) 2006-2007, LAMP/EPFL             ****  __\ \/ /__/ __ |/ /__/ __ |                                         **** /____/\___/_/ |_/____/_/ | |                                         ****                          |/                                          **\*                                                                      */// $Id: BufferWrapper.scala 13589 2007-12-19 10:38:50Z odersky $package scala.collection.jcl;/** Wraps Java lists. * *  @author Sean McDirmid */trait BufferWrapper[A] extends Buffer[A] with CollectionWrapper[A] {  def underlying : java.util.List[A];  override def elements : BufferIterator[Int,A] = new IteratorWrapper(underlying.listIterator);  override def remove(idx : Int) = underlying.remove(idx).asInstanceOf[A];  override def add(a : A) = underlying.add(a);  override def add(idx : Int, a : A) = underlying.add(idx,a);  override def addAll(idx : Int, that : Iterable[A]) = that match {  case that : CollectionWrapper[_] => underlying.addAll(idx, that.underlying); {}  case _ => super.addAll(idx, that);  }  override def indexOf(a : A) = {    val result = underlying.indexOf(a);    if (result == -1) None;    else Some(result);  }  override def apply(idx : Int) = underlying.get(idx).asInstanceOf[A];  override def set(idx : Int, a : A) = underlying.set(idx, a).asInstanceOf[A];  override def rangeImpl(from : Option[Int], until : Option[Int]) : Buffer[A] = new Range(from, until);  protected class Range(from : Option[Int], until : Option[Int]) extends super.Range(from,until) with BufferWrapper[A] {    val underlying = {      val fromi = if (from == None) 0 else from.get;      val toi = if (until == None) BufferWrapper.this.size else until.get;      BufferWrapper.this.underlying.subList(fromi, toi);    }    override def elements = super[BufferWrapper].elements;  }  class IteratorWrapper(underlying : java.util.ListIterator[A]) extends MutableIterator.Wrapper[A](underlying) with BufferIterator[Int,A] {    def add(a : A) = underlying.add(a);    def set(a : A) = underlying.set(a);    def hasPrevious = underlying.hasPrevious;    def previous = underlying.previous.asInstanceOf[A];    def previousIndex = underlying.previousIndex;    def nextIndex = underlying.nextIndex;  }  override def length = underlying.size;}

⌨️ 快捷键说明

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