首页 > 其他分享 >Scala:Scala的Map集合

Scala:Scala的Map集合

时间:2024-11-10 22:45:16浏览次数:3  
标签:Map f2 val Scala println 集合 k2

Scala的 Map 概述 

Map(映射)是一种可迭代的键值对(Key/Value)结构,所有值都可以通过键来获取,Map中的键都是唯一的。定义Map时,需要为键值对定义类型。 

————Scala 的 Map 的定义————

在Java中,Map是以键值对(K,V)的形式存在的,例如(Key1,V1)。在Scala中,Map 集合同样是以键值对的方式存在的,应用非常广泛。

————Scala 的 Map 的创建————

在Scala中,有两种创建Map的方式,分别是Map(k1->v1,k2->v2,..) 和 Map((k1,v1),(k2,v2),..)。

Map(k1->v1,k2->v2,..) 中的 k1->v1 表示第一个元素,k2->v2表示第二个元素。

第二种方式 Map((k1,v1),(k2,v2),..)是通过元组的方式定义的。

———— Scala 的 Map 的分类————

Scala的Map有两种类型,即可变的和不可变的。上述创建Map的方式是不可变的,如果想创建可变的Map,需要导人指定的包,创建方式与不可变的方式相同。

Scala 的可变 Map常用操作

Scala的可变Map常用操作有增加、删除、修、查询等。

372b4fc4dbeb4446887ffa8d40293053.jpg

 Scala 的不可变Map常用操作

由于是不可变Map,所以不可以进行更新操作。添加、删除、查询和遍历操作与之前介绍的操作方法相同。

20909f352c834bcdbbe53bb14f2f7ff8.jpg

import scala.collection.mutable
object t14 {
  def main(args: Array[String]): Unit = {
    //创建  1.Map("苹果" -> 9,"香蕉" -> 8)  2.Map(("苹果",9),("香蕉",8))
 
 
    //不可变Map
    val f1:Map[String,Int] = Map("苹果" -> 9,"香蕉" -> 8)   //:Map[String,Int]可省略
    //1.添加
    val f1_1 = f1 + ("梨" -> 4)
    println(f1_1)
 
 
 
 
    //可变Map
    val f2 = mutable.Map("苹果" -> 9,"香蕉" -> 8)
    //1.添加  用+=或put
    f2 += ("梨" -> 4)
    f2.put("葡萄",11)
    println(f2)
    //2.查询
    //2.1
    val rs = f2.get("梨") //找不到,返回None  它得到的是一个包装对象,具体的内容需要再次调用get  re.get
    //2.2
    val rs1 = f2("梨")  //找不到,直接报错
    println(rs.get,rs1)
    //3.删除
    f2.remove("苹果")
    f2 -= "香蕉"
    println(f2)
    //4.遍历
    //4.1 for循环
    for((k,v) <- f2){
      println(s"${k}的价格是:${v}")
    }
    println("-"*15)
    //4.2 foreach
    f2.foreach{case (key,value)=>
      println(s"${key}的价格是:${value}")
    }
  }
}

标签:Map,f2,val,Scala,println,集合,k2
From: https://blog.csdn.net/2402_87106544/article/details/143581751

相关文章

  • 04集合基础-哈希表
    目录1.集合类的线程安全实现1.同步包装器(SynchronizedWrappers)保证线程安全的方式2.并发集合类(ConcurrentCollections)常见的并发集合类保证线程安全的方式3.不可变集合(ImmutableCollections)2.哈希表1.高效的查找、插入和删除操作2.减少内存占用3.支持唯一......
  • 如何使用Yolov8训练——胸部肺结节目标检测数据集 1个类别 精确度P:0.655,召回率R:0.575,m
    同时yolov8n训练100个epoch检测结果如下精确度P:0.655,召回率R:0.575,mAP50:0.639,map50-95:0.289数据集可直接使用,未做任何数据增强等预处理胸部肺结节目标检测数据集该数据集已经包括1个类别分别是:target总计图片4882张图像,分辨率是1024x1024像素数据集是txt格式数......
  • 一文彻底弄懂JUC工具包的Semaphore
    Semaphore是Java并发包(java.util.concurrent)中的重要工具,主要用于控制多线程对共享资源的并发访问量。它可以设置“许可证”(permit)的数量,并允许指定数量的线程同时访问某一资源,适合限流、资源池等场景。下面从源码设计、底层原理、应用场景、以及与其它JUC工具的对比来详......
  • 封装红黑树实现mymap和myset--C++
    源码及框架分析SGI-STL30版本源代码,map和set的源代码在map/set/stl_map.h/stl_set.h/stl_tree.h等几个头文件中。map和set的实现结构框架核心部分截取出来如下://set#ifndef__SGI_STL_INTERNAL_TREE_H#include<stl_tree.h>#endif#include<stl_set.h>#include<st......
  • 地图框架之mapbox——(六)
    今天跟大家分享一下popup、标注、以及canvas,到这里基本上mapbox的基本内容也就告一段落,后续根据我在工作中遇到的问题再做相关的分享。一、标注(marker)Markersandcontrols|MapboxGLJS|Mapbox首先记住标记不是图层,他只是作为一个单独的对象,被添加到地图上了。核心api......
  • 4-2-2.C# 数据容器 - HashSet 扩展(HashSet 集合操作、HashSet 存储对象的特性、HashSe
    HashSet概述HashSet<T>存储的元素是无序的HashSet<T>存储的元素是不可重复的HashSet<T>支持泛型,可以指定存储的元素的类型HashSet<T>不支持索引,不可以通过索引获取或修改元素HashSet<T>不是线程安全的,在多线程环境中需要谨慎使用一、HashSet集合操作1......
  • 有DEM,如何在Global Mapper中绘制等高线,并导出至CAD
    通常,用无人机航测或其它途径得到的DEM、DSM来绘制等高线,一般流程是将DEM导出至南方CASS或其它格式的高程点文件,再用这些高程点来建立DTM、结三角网、编辑三角网,来进行等高线的绘制,做过等高线生产的测绘兄弟们都清楚,这个过程还是十分繁琐的。实际上,用GlobalMapper可以直接从DEM中......
  • WPF 集合操作进阶:提取特定字段、转换 ObservableCollection 和过滤数据
    文章目录1.引言2.从List<T>提取特定字段3.将List<T>转换为observableCollection<T>4.过滤List<T>集合5.总结6.完整示例代码1.引言在C#开发中,集合操作是非常常见的任务,特别是在数据处理和用户界面设计中。本文将介绍如何从List<T>中提取......
  • 【MATLAB源码-第212期】基于matlab的8PSK的log-map软解调仿真,输出误码率曲线和星座图
    操作环境:MATLAB2022a1、算法描述1.8PSK调制和解调系统8PSK(8相位移键控)是一种数字调制技术,它通过改变载波信号的相位来传输数据。在这个系统中,我们将介绍8PSK的工作原理、调制过程、信道模型、解调过程,特别是log-MAP软解调的实现。1.18PSK调制的基本原理8PSK调制的基本......
  • 比较集合
    点击查看代码importlombok.Getter;importjava.util.*;importjava.util.stream.Collectors;publicclassCollectionUtils{/***compare*@paramnewCollection新集合*@paramoldCollection旧集合*@paramcomparator*@......