ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Scala 速通语法(九)| 数据结构

2021-10-11 01:05:20  阅读:166  来源: 互联网

标签:java 速通 scala Scala collection util 集合 数据结构


数据结构

  • Scala集合简介
    • Scala同时支持不可变集合可变集合 不可变集合可以安全并发访问
    1. 不可变集合:scala.collection.immutable
    2. 可变集合:scala.collection.mutable
    • Scala默认采用不可变集合,对于几乎所有的集合类,Scala都提供了可变与不可变版本
    • Scala几个有三大类:序列Seq序列(有序性的,Linear、Seq)、集(Set)、映射(Map [key->value]),所有的的集合都扩展自Iterable特质

不可变集合

可变集合

Java 集合 和 Scala 集合相互转换

  • 添加 import scala.jdk.CollectionConverters._
  • 使用 asJava 和 asScala 相互转化

  • 转化规则
scala.collection.Iterable <=> java.lang.Iterable
scala.collection.Iterable <=> java.util.Collection
scala.collection.Iterator <=> java.util.{ Iterator, Enumeration }
scala.collection.mutable.Buffer <=> java.util.List
scala.collection.mutable.Set <=> java.util.Set
scala.collection.mutable.Map <=> java.util.{ Map, Dictionary }
scala.collection.mutable.ConcurrentMap <=> java.util.concurrent.ConcurrentMap
scala.collection.Seq  => java.util.List
scala.collection.mutable.Seq => java.util.List
scala.collection.Set  => java.util.Set
scala.collection.Map => java.util.Map
java.util.Properties => scala.collection.mutable.Map[String, String]

元组

  • 简介:元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据 类似C++结构体

注:元组种最大只能22个元素

  • 元组的创建
      //元组创建
      val tuple = (1,2,"test",3.4,5.7f,'a')
      println(tuple.getClass.getName)
      //元组调用
      println(tuple._1+"---"+tuple._5)
      println(tuple.productElement(3))
      //元组遍历
      for(item<-tuple.productIterator){
        println(item)
      }
    

List

  • 在Java 中List 是一个接口,真正存放数据是ArrayList,Scala的List 可以直接存放数据,就是一个object,默认情况下Scala 的List 是不可变的,List 属于序列Seq

Array 数组

  • 定长数组
  • 这里的数组等同于 Java 中的数组,中括号的类型就是数组的类型
  //创建Array方式1
  val arr1 = new Array[Any](10)
  //创建Array方式2
  val arr2 = Array(1,"3",3.3,'w')
  //修改
  arr1(3) = "333"
  //遍历
  for(i <- arr1){
    println("i====="+i)
  }
  • 变长数组

标签:java,速通,scala,Scala,collection,util,集合,数据结构
来源: https://www.cnblogs.com/zhy-god/p/15339408.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有