1. Map
映射(Map)是一种可迭代的键值对结构(也称映射或关联)。在scala中map分为可变长(mutable)与不可变长(imutable),不可变长map映射初始化之后,其长度与值都不能改变。
Scala的Predef类提供了隐式转换,允许使用另一种语法:key -> value,来代替(key, value)。
如:Map(“x” -> 24, “y” -> 25, “z” -> 26)等同于Map((“x”, 24), (“y”, 25), (“z”, 26)),却更易于阅读。
1.1 Map 初始化
1 | //1.通过对偶元组创建map 映射 |
1.2 Map 查看元素
1 |
|
1.3 Map 增加元素
1 | val m1 = mutable.Map(("a", "A"),("b", "B")) |
1.4 Map 修改元素
1 | val m4 = mutable.Map(("a", "A"), "b" -> "B", "c" -> "C") |
1.5 Map 删除元素
1 | val m1 = mutable.Map(("a", "A"),("b", "B"),("c", "C"),("d", "D"),("e", "E"),("f", "F"),("g", "G")) |
1.6 SortedMap 元素排序
1 |
|
1.7 有序Map LinkedHashMap
1 | //linkedHashMap 插入有序,会按照我们插入的顺序排序,底层是链表 |
1.8 多值Map
1 | // 结合Map和Tuple,很容易实现一个key对应的value是组合值的数据结构: |
2. 和Java集合间的转换(Scalaj)
Java的List
很容易通过List.toArray转换到Array,和Scala中的Array是等价的,可使用map、filter等。 使用第三方的scalaj扩展包(需自行下载设置classpath)
1 | //例子1: |
2.1 scalaj Java to Scala
| Java类型 | 转换方法 |
|---|---|
| java.lang.Comparable[A] | #asScala: scala.math.Ordered[A] |
| java.util.Comparator[A] | #asScala: scala.math.Ordering[A] |
| java.util.Enumeration[A] | #asScala: scala.collection.Iterator[A] #foreach(A => Unit): Unit |
| java.util.Iterator[A] | #asScala: scala.collection.Iterator[A] #foreach(A => Unit): Unit |
| java.lang.Iterable[A] | #asScala: scala.collection.Iterable[A] #foreach(A => Unit): Unit |
| java.util.List[A] | #asScala: scala.collection.Seq[A] #asScalaMutable: scala.collection.mutable.Seq[A] |
| java.util.Set[A] | #asScala: scala.collection.Set[A] #asScalaMutable: scala.collection.mutable.Set[A] |
| java.util.Map[A, B] | #asScala: scala.collection.Map[A, B] #asScalaMutable: scala.collection.mutable.Map[A, B] #foreach(((A, B)) => Unit): Unit |
| java.util.Dictionary[A, B] | #asScala: scala.collection.mutable.Map[A, B] #foreach(((A, B)) => Unit): Unit |
2.2 scalaj Scala to Java
| Scala类型 | 转换方法 |
|---|---|
| scala.math.Ordered[A] | #asJava: java.util.Comparable[A] |
| scala.math.Ordering[A] | #asJava: java.util.Comparator[A] |
| scala.collection.Iterator[A] | #asJava: java.util.Iterator[A] #asJavaEnumeration: java.util.Enumeration[A] |
| scala.collection.Iterable[A] | #asJava: java.lang.Iterable[A] |
| scala.collection.Seq[A] | #asJava: java.util.List[A] |
| scala.collection.mutable.Seq[A] | #asJava: java.util.List[A] |
| scala.collection.mutable.Buffer[A] | #asJava: java.util.List[A] |
| scala.collection.Set[A] | #asJava: java.util.Set[A] |
| scala.collection.mutable.Set[A] | #asJava: java.util.Set[A] |
| scala.collection.Map[A, B] | #asJava: java.util.Map[A, B] |
| scala.collection.mutable.Map[A, B]#asJava: java.util.Map[A, B] #asJavaDictionary: java.util.Dictionary[A, B] |