Map常用操作
检查Map对象是否包含某个键
package main object Test { def main(args: Array[String]): Unit = { val map = Map(1 -> "one", 2 -> "two", 3 -> "three", 4 -> "four", 5 -> "five"); println(map.getClass.getName); //scala.collection.immutable.HashMap$HashTrieMap println(map); //Map(5 -> five, 1 -> one, 2 -> two, 3 -> three, 4 -> four) println( map.contains(1) ); //true println( map.contains(9) ); //false } }
根据键更新它的值
package main object Test { def main(args: Array[String]): Unit = { val map = Map(1 -> "one", 2 -> "two", 3 -> "three", 4 -> "four", 5 -> "five"); println(map.getClass.getName); //scala.collection.immutable.HashMap$HashTrieMap println(map); //Map(5 -> five, 1 -> one, 2 -> two, 3 -> three, 4 -> four)
println( map.updated(5, "F5") ); //Map(5 -> F5, 1 -> one, 2 -> two, 3 -> three, 4 -> four) println( map.updated(9, "X9") ); //Map(5 -> five, 1 -> one, 9 -> X9, 2 -> two, 3 -> three, 4 -> four) } }
使用 updated()方法会更新键值对,并返回一个新的Map对象。
如果这个键在原Map对象中不存在,则相当于新增一个键值对。否则就是更新值。
遍历Map对象
package main object Test { def main(args: Array[String]): Unit = { val map = Map(1 -> "one", 2 -> "two", 3 -> "three", 4 -> "four", 5 -> "five"); println(map.getClass.getName); //scala.collection.immutable.HashMap$HashTrieMap println(map); //Map(5 -> five, 1 -> one, 2 -> two, 3 -> three, 4 -> four) for ((k, v) <- map) { println(k + "==" + v); } /** * 5==five * 1==one * 2==two * 3==three * 4==four **/ map.foreach(x => { println(x._1 + " == " + x._2); }); /** * 5 == five * 1 == one * 2 == two * 3 == three * 4 == four **/ } }
得到键的集合
package main object Test { def main(args: Array[String]): Unit = { val map = Map(1 -> "one", 2 -> "two", 3 -> "three", 4 -> "four", 5 -> "five"); println(map.getClass.getName); //scala.collection.immutable.HashMap$HashTrieMap println(map); //Map(5 -> five, 1 -> one, 2 -> two, 3 -> three, 4 -> four) val keys = map.keys; println(keys.getClass.getName);//scala.collection.immutable.MapLike$ImmutableDefaultKeySet println(keys); //Set(5, 1, 2, 3, 4) val keySet = map.keySet; println(keySet.getClass.getName);//scala.collection.immutable.MapLike$ImmutableDefaultKeySet println(keySet); //Set(5, 1, 2, 3, 4) } }
得到值的集合
package main object Test { def main(args: Array[String]): Unit = { val map = Map(1 -> "one", 2 -> "two", 3 -> "three", 4 -> "four", 5 -> "five"); println(map.getClass.getName); //scala.collection.immutable.HashMap$HashTrieMap println(map); //Map(5 -> five, 1 -> one, 2 -> two, 3 -> three, 4 -> four) val values = map.values; println(values.getClass.getName); //scala.collection.MapLike$DefaultValuesIterable println(values); //MapLike.DefaultValuesIterable(five, one, two, three, four) println(values.toList); //List(five, one, two, three, four) val valuesIterator = map.valuesIterator; println(valuesIterator.getClass.getName); //scala.collection.MapLike$$anon$2 println(valuesIterator); //<iterator> println(valuesIterator.toList); //List(five, one, two, three, four) } }
转换函数
package main object Test { def main(args: Array[String]): Unit = { val map = Map(1 -> "one", 2 -> "two", 3 -> "three", 4 -> "four", 5 -> "five"); println(map.getClass.getName); //scala.collection.immutable.HashMap$HashTrieMap println(map); //Map(5 -> five, 1 -> one, 2 -> two, 3 -> three, 4 -> four) val filter = map.filter( x => { x._1 > 3 }); println(filter.getClass.getName); //scala.collection.immutable.HashMap$HashTrieMap println(filter); //Map(5 -> five, 4 -> four) val filterKeys = map.filterKeys( x => x < 3 ); println(filterKeys.getClass.getName); //scala.collection.immutable.MapLike$$anon$1 println(filterKeys); //Map(1 -> one, 2 -> two) val mapValues = map.mapValues( x => x.toUpperCase() ); println(mapValues.getClass.getName); //scala.collection.immutable.MapLike$$anon$2 println(mapValues); //Map(5 -> FIVE, 1 -> ONE, 2 -> TWO, 3 -> THREE, 4 -> FOUR) val mapValuesFilter = map.mapValues( x => x.length > 3 ); println(mapValuesFilter.getClass.getName); //scala.collection.immutable.MapLike$$anon$2 println(mapValuesFilter); //Map(5 -> true, 1 -> false, 2 -> false, 3 -> true, 4 -> true) println(map); //Map(5 -> five, 1 -> one, 2 -> two, 3 -> three, 4 -> four) } }

浙公网安备 33010602011771号