Scala – map函数 – 仅返回Map的最后一个元素
发布时间:2020-12-16 18:19:06 所属栏目:安全 来源:网络整理
导读:我是 Scala的新手并在地图上尝试了地图功能. 这是我的地图: scala val map1 = Map ("abc" - 1,"efg" - 2,"hij" - 3) map1: scala.collection.immutable.Map[String,Int] = Map(abc - 1,efg - 2,hij - 3) 这是一个map函数和结果: scala val result1 = map1.
我是
Scala的新手并在地图上尝试了地图功能.
这是我的地图: scala> val map1 = Map ("abc" -> 1,"efg" -> 2,"hij" -> 3) map1: scala.collection.immutable.Map[String,Int] = Map(abc -> 1,efg -> 2,hij -> 3) 这是一个map函数和结果: scala> val result1 = map1.map(kv => (kv._1.toUpperCase,kv._2)) result1: scala.collection.immutable.Map[String,Int] = Map(ABC -> 1,EFG -> 2,HIJ -> 3) 这是另一个map函数和结果: scala> val result1 = map1.map(kv => (kv._1.length,kv._2)) result1: scala.collection.immutable.Map[Int,Int] = Map(3 -> 3) 第一个map函数按预期返回所有成员,但第二个map函数仅返回Map的最后一个成员.有人可以解释为什么会这样吗? 提前致谢! 解决方法
在Scala中,Map不能有重复的键.添加新密钥时 – >值对映射,如果该键已存在,则覆盖以前的值.如果您要从集合上的功能操作创建映射,那么您将最终得到与每个唯一键的最后一个实例对应的值.在您编写的示例中,原始映射map1的每个字符串键具有相同的长度,因此所有字符串键都为result1生成相同的整数键3.在计算结果1的情况下发生的事情是:
>创建一个新的空地图 注意:我做了一个简化的假设,即map迭代器中元素的顺序与您在声明中编写的顺序相同.订单由散列bin确定,可能与您添加元素的顺序不匹配,因此不要构建依赖于此假设的任何内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |