linkedhashmap.scala
来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 69 行
SCALA
69 行
/* __ *\** ________ ___ / / ___ Scala API **** / __/ __// _ | / / / _ | (c) 2003-2007, LAMP/EPFL **** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **** /____/\___/_/ |_/____/_/ | | **** |/ **\* */// $Id: LinkedHashMap.scala 14416 2008-03-19 01:17:25Z mihaylov $package scala.collection.mutableimport Predef._/** This class implements mutable maps using a hashtable. * * @author Matthias Zenger * @author Martin Odersky * @version 2.0, 31/12/2006 */object LinkedHashMap { /** The empty map of this type */ def empty[A, B] = new LinkedHashMap[A, B] /** The canonical factory for this type */ def apply[A, B](elems: (A, B)*) = empty[A, B] ++ elems}@serializableclass LinkedHashMap[A, B] extends Map[A,B] with HashTable[A] with DefaultMapModel[A,B] { private var ordered = List[Entry]() def remove(key: A): Option[B] = removeEntry(key) match { case None => None case Some(e) => ordered = ordered.filter(_ ne e) Some(e.value) } def -= (key: A) { remove(key) } override def put(key: A, value: B): Option[B] = { val e = findEntry(key) if (e == null) { val e = new Entry(key, value) ordered = e :: ordered addEntry(e) None } else { val ret = Some(e.value) e.value = value ret } } override def update(key: A, value: B) { put(key, value) } override def clear() { ordered = Nil super.clear() } override def clone(): Map[A, B] = new LinkedHashMap[A, B] ++ this override def elements = ordered.reverse.elements map {e => (e.key, e.value)}}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?