1.List 基础操作

2.Set 基础操作

3. TreeSet 排序Set

4. 拉链操作

5. 流

  1. import scala.collection.immutable.TreeSet
  2. import scala.util.Random
  3.  
  4. /**
  5. * @author xwolf
  6. * @date 2017-04-25 15:26
  7. * @since 1.8
  8. */
  9. object Collection {
  10.  
  11. def main(args:Array[String]):Unit={
  12.  
  13. list()
  14. // set()
  15. //treeSet()
  16. }
  17.  
  18. //Seq
  19. def seq():Unit={
  20. val seq = Seq(32,3,43,3,2,321,4)
  21. println(seq)
  22. }
  23.  
  24. //List
  25. def list():Unit={
  26. var list = List(3,24,123,7,4)
  27. //头部追加元素
  28. list=12::list
  29. list=list++Set(101,5)
  30. list = list.+:(14)
  31. val lst =List(54,65)
  32. //list 追加
  33. list = lst.:::(list)
  34. //删除第一个元素
  35. list=list.drop(1)
  36. // 和下面写法等价
  37. // list=lst:::list
  38. println(list)
  39. //排序
  40. list=list.sorted
  41. println(list)
  42. //自定义排序
  43. list = list.sortWith((x:Int,y:Int)=> x>y)
  44. println(list)
  45. //求和
  46. val sum = list.sum
  47. println(sum)
  48.  
  49. // 去重并 取出来偶数
  50. val newList = list.distinct.filter((x:Int)=>x%2==0)
  51. println(newList)
  52. val isContains = newList.contains(4)
  53. println(isContains)
  54. //遍历输出
  55. //newList.foreach(println _)
  56.  
  57. val secList = List(3,4,35,5)
  58. //模式匹配求和
  59. val sums = listSumMatch(secList)
  60. val sumsec = secList.sum
  61. println(sums+","+sumsec)
  62.  
  63. val a = List("土豆","白菜","猪肉","牛肉")
  64. val b = List(21,2,43,54)
  65. val c = zip(a,b)
  66. println(c)
  67. val price= c.map(p=>p._2).sum
  68. println(price)
  69. stream()
  70. }
  71. //Set
  72. def set():Unit={
  73. var set =Set(5,2,10,6,3)
  74. var st =Set(2,31,6)
  75. //求两个集合的交集
  76. val eqset = set & st
  77. println(eqset)
  78. //追加元素
  79. set = set++:st
  80. println(set)
  81. //删除元素
  82. set = set.-(2)
  83. println(set)
  84. //删除第一个元素
  85. set = set.drop(1)
  86. println(set)
  87. //任意N个元素组成新的set 集合;如果N大于set的长度返回空
  88. // set.subsets(3).foreach(println _)
  89.  
  90. //返回区间之内的元素
  91. val sliceSet = set.slice(2,5)
  92. println(sliceSet)
  93.  
  94. //是否包含指定元素
  95. val isContains = sliceSet.contains(3)
  96. println(isContains)
  97.  
  98. }
  99. //treeSet 排序集合(不可变)
  100. def treeSet():Unit={
  101. var ts = TreeSet(32,3,2,5,212,53,5)
  102. //添加元素
  103. ts= ts.+(15)
  104. println(ts)
  105. ts = ts.-(3)
  106. println(ts)
  107.  
  108. //构造新的集合
  109. val tree = TreeSet(5,2,3)
  110. val newTree= tree.+(4)
  111. println(newTree)
  112.  
  113. }
  114.  
  115. //list 求和
  116. def listSum(list: List[Int]):Int={
  117. if (list == Nil) 0
  118. //tail 返回除第一个元素外的所有的集合
  119. else list.head + listSum(list.tail)
  120. }
  121. //模式匹配求和
  122. def listSumMatch(list: List[Int]):Int= list match {
  123. case Nil => 0
  124. case h::t => h + listSumMatch(t)
  125. }
  126.  
  127. //拉链操作
  128. def zip(a:List[String],b:List[Int]):List[(String,Int)] = a zip(b)
  129.  
  130. //流式操作
  131. def stream():Unit={
  132. val randomList = (1 to 50).map(_ => Random.nextInt(100)).toList
  133. //val isDivide = randomList.filter(divide(_)).take(3)
  134. // println(isDivide)
  135.  
  136. val nList= randomList.toStream.filter(divide(_)).take(3).toList
  137. println(nList)
  138.  
  139. }
  140. def divide(n:Int):Boolean={
  141. val is = n%4==0
  142. println(s"${is}")
  143. is
  144. }
  145.  
  146. }

更多集合类操作:

http://docs.scala-lang.org/zh-cn/overviews/collections/sets.html  

具体的不可变集实体类

[scala] scala 集合(⑧)的更多相关文章

  1. Scala:集合类型Collection和迭代器

    http://blog.csdn.net/pipisorry/article/details/52902549 Scala Collection Scala 集合分为可变的和不可变的集合. 可变集合可 ...

  2. Scala数组| 集合

    arrays :+ 5尾部   头部5 +: arrays TODO 声明不可变数组,不能删; 默认情况下,scala中集合的声明全都是不可变的 val arrays: Array[Int] = Ar ...

  3. scala 可变集合与内存清理的关系

    留坑待填 使用scala.collection.mutable._期间,发现了当程序运行内存开销较多时,使用系统工具进行内存清理,然后程序报出了变量找不到.内存无法访问.数组访问越界,堆栈溢出等多种错 ...

  4. Scala学习——集合的使用和“_”的一些使用(中)

    1.空格加_可以表示函数的原型 命令行代码: scala> def fun1(name:String){println(name)} fun1: (name: String)Unit scala ...

  5. scala中集合的交集、并集、差集

    scala中有一些api设计的很人性化,集合的这几个操作是个代表: 交集: scala> Set(1,2,3) & Set(2,4) // &方法等同于interset方法 sc ...

  6. 用Scala实现集合中相邻元素间的差值

    欢迎转载,转载请注明出处,徽沪一郎. 概要 代码这东西,不写肯定不行,新学Scala不久,将实际遇到的一些问题记录下来,日后也好查找. 今天讲的是如何计算同一集合中元素两两之间的差值,即求开始集合(a ...

  7. 【Scala篇】--Scala中集合数组,list,set,map,元祖

    一.前述 Scala在常用的集合的类别有数组,List,Set,Map,元祖. 二.具体实现 数组   1.创建数组 new Array[Int](10) 赋值:arr(0) = xxx Array[ ...

  8. Scala之集合Collection

    概述 Scala的集合类能够从三个维度进行切分: 可变与不可变集合(Immutable and mutable collections) 静态与延迟载入集合 (Eager and delayed ev ...

  9. [转] Scala 的集合类型与数组操作

    [From] https://blog.csdn.net/gongxifacai_believe/article/details/81916659 版权声明:本文为博主原创文章,转载请注明出处. ht ...

随机推荐

  1. Android ——利用OnDraw实现自定义View(转)

    自定义View的实现方式大概可以分为三种,自绘控件.组合控件.以及继承控件.本文将介绍自绘控件的用法.自绘控件的意思是,这个控件上的内容是用onDraw函数绘制出来的.关于onDraw函数的介绍可参看 ...

  2. oracle快速创建可用用户

    执行语句 create user utaptest identified by utaptest; create tablespace utaptestspace datafile 'd:\data. ...

  3. JS监听页面----无鼠标键盘动作,自动跳页

    function ScreenSaver(settings){ this.settings = settings; this.nTimeout = this.settings.timeout; doc ...

  4. filter和map的区别

    filter和map初一看很像 都是filter(func,iterable) map(func,iterable) 实际情况是filter函数:filter()为已知的序列的每个元素调用给定的布尔函 ...

  5. linux进程的挂起和恢复

    进程的挂起及恢复 #ctrl+z:挂起,程序放到后台,程序没有结束. #jobs:查看被挂起的程序工作号 恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前台执行:用bg命令将挂起的作业放到后台 ...

  6. struts2客户端与服务器端即jsp页面与action之间的关系

    在Struts2中,客户端和服务器之间的数据传输全部要用到get.set方法:用set方法 ,可以将表单中的值存入Action类.通过Struts2.0标签,调用get方法将Action类中的结果数据 ...

  7. (笔记)linux 进程和线程的区别

    进程:进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集.从内核的观点看,进程的目的就是担当分配系统资源(CPU时间.内存等)的基本单位. 线程:线程是进程的一个执行流,是CPU ...

  8. e810. 创建弹出菜单

    final JPopupMenu menu = new JPopupMenu(); // Create and add a menu item JMenuItem item = new JMenuIt ...

  9. perl学习(二)正则表达式

    模式分组: /fred+/会匹配freddd这样的 /(fred)+/会匹配fredfredfred这样的 /(fred)*/则会匹配abcdef任意的 圆括号同时也使得重新使用某些字符串成为可能.反 ...

  10. AngularJS $http模块POST数据,后台接受不到

    1.问题: 后端接收不到AngularJs中$http.post发送的数据,总是显示为null 示例代码: $http.post(/admin/KeyValue/GetListByPage, { pa ...