[scala] scala 集合(⑧)
1.List 基础操作
2.Set 基础操作
3. TreeSet 排序Set
4. 拉链操作
5. 流
- import scala.collection.immutable.TreeSet
- import scala.util.Random
- /**
- * @author xwolf
- * @date 2017-04-25 15:26
- * @since 1.8
- */
- object Collection {
- def main(args:Array[String]):Unit={
- list()
- // set()
- //treeSet()
- }
- //Seq
- def seq():Unit={
- val seq = Seq(32,3,43,3,2,321,4)
- println(seq)
- }
- //List
- def list():Unit={
- var list = List(3,24,123,7,4)
- //头部追加元素
- list=12::list
- list=list++Set(101,5)
- list = list.+:(14)
- val lst =List(54,65)
- //list 追加
- list = lst.:::(list)
- //删除第一个元素
- list=list.drop(1)
- // 和下面写法等价
- // list=lst:::list
- println(list)
- //排序
- list=list.sorted
- println(list)
- //自定义排序
- list = list.sortWith((x:Int,y:Int)=> x>y)
- println(list)
- //求和
- val sum = list.sum
- println(sum)
- // 去重并 取出来偶数
- val newList = list.distinct.filter((x:Int)=>x%2==0)
- println(newList)
- val isContains = newList.contains(4)
- println(isContains)
- //遍历输出
- //newList.foreach(println _)
- val secList = List(3,4,35,5)
- //模式匹配求和
- val sums = listSumMatch(secList)
- val sumsec = secList.sum
- println(sums+","+sumsec)
- val a = List("土豆","白菜","猪肉","牛肉")
- val b = List(21,2,43,54)
- val c = zip(a,b)
- println(c)
- val price= c.map(p=>p._2).sum
- println(price)
- stream()
- }
- //Set
- def set():Unit={
- var set =Set(5,2,10,6,3)
- var st =Set(2,31,6)
- //求两个集合的交集
- val eqset = set & st
- println(eqset)
- //追加元素
- set = set++:st
- println(set)
- //删除元素
- set = set.-(2)
- println(set)
- //删除第一个元素
- set = set.drop(1)
- println(set)
- //任意N个元素组成新的set 集合;如果N大于set的长度返回空
- // set.subsets(3).foreach(println _)
- //返回区间之内的元素
- val sliceSet = set.slice(2,5)
- println(sliceSet)
- //是否包含指定元素
- val isContains = sliceSet.contains(3)
- println(isContains)
- }
- //treeSet 排序集合(不可变)
- def treeSet():Unit={
- var ts = TreeSet(32,3,2,5,212,53,5)
- //添加元素
- ts= ts.+(15)
- println(ts)
- ts = ts.-(3)
- println(ts)
- //构造新的集合
- val tree = TreeSet(5,2,3)
- val newTree= tree.+(4)
- println(newTree)
- }
- //list 求和
- def listSum(list: List[Int]):Int={
- if (list == Nil) 0
- //tail 返回除第一个元素外的所有的集合
- else list.head + listSum(list.tail)
- }
- //模式匹配求和
- def listSumMatch(list: List[Int]):Int= list match {
- case Nil => 0
- case h::t => h + listSumMatch(t)
- }
- //拉链操作
- def zip(a:List[String],b:List[Int]):List[(String,Int)] = a zip(b)
- //流式操作
- def stream():Unit={
- val randomList = (1 to 50).map(_ => Random.nextInt(100)).toList
- //val isDivide = randomList.filter(divide(_)).take(3)
- // println(isDivide)
- val nList= randomList.toStream.filter(divide(_)).take(3).toList
- println(nList)
- }
- def divide(n:Int):Boolean={
- val is = n%4==0
- println(s"${is}")
- is
- }
- }
更多集合类操作:
http://docs.scala-lang.org/zh-cn/overviews/collections/sets.html
[scala] scala 集合(⑧)的更多相关文章
- Scala:集合类型Collection和迭代器
http://blog.csdn.net/pipisorry/article/details/52902549 Scala Collection Scala 集合分为可变的和不可变的集合. 可变集合可 ...
- Scala数组| 集合
arrays :+ 5尾部 头部5 +: arrays TODO 声明不可变数组,不能删; 默认情况下,scala中集合的声明全都是不可变的 val arrays: Array[Int] = Ar ...
- scala 可变集合与内存清理的关系
留坑待填 使用scala.collection.mutable._期间,发现了当程序运行内存开销较多时,使用系统工具进行内存清理,然后程序报出了变量找不到.内存无法访问.数组访问越界,堆栈溢出等多种错 ...
- Scala学习——集合的使用和“_”的一些使用(中)
1.空格加_可以表示函数的原型 命令行代码: scala> def fun1(name:String){println(name)} fun1: (name: String)Unit scala ...
- scala中集合的交集、并集、差集
scala中有一些api设计的很人性化,集合的这几个操作是个代表: 交集: scala> Set(1,2,3) & Set(2,4) // &方法等同于interset方法 sc ...
- 用Scala实现集合中相邻元素间的差值
欢迎转载,转载请注明出处,徽沪一郎. 概要 代码这东西,不写肯定不行,新学Scala不久,将实际遇到的一些问题记录下来,日后也好查找. 今天讲的是如何计算同一集合中元素两两之间的差值,即求开始集合(a ...
- 【Scala篇】--Scala中集合数组,list,set,map,元祖
一.前述 Scala在常用的集合的类别有数组,List,Set,Map,元祖. 二.具体实现 数组 1.创建数组 new Array[Int](10) 赋值:arr(0) = xxx Array[ ...
- Scala之集合Collection
概述 Scala的集合类能够从三个维度进行切分: 可变与不可变集合(Immutable and mutable collections) 静态与延迟载入集合 (Eager and delayed ev ...
- [转] Scala 的集合类型与数组操作
[From] https://blog.csdn.net/gongxifacai_believe/article/details/81916659 版权声明:本文为博主原创文章,转载请注明出处. ht ...
随机推荐
- Android ——利用OnDraw实现自定义View(转)
自定义View的实现方式大概可以分为三种,自绘控件.组合控件.以及继承控件.本文将介绍自绘控件的用法.自绘控件的意思是,这个控件上的内容是用onDraw函数绘制出来的.关于onDraw函数的介绍可参看 ...
- oracle快速创建可用用户
执行语句 create user utaptest identified by utaptest; create tablespace utaptestspace datafile 'd:\data. ...
- JS监听页面----无鼠标键盘动作,自动跳页
function ScreenSaver(settings){ this.settings = settings; this.nTimeout = this.settings.timeout; doc ...
- filter和map的区别
filter和map初一看很像 都是filter(func,iterable) map(func,iterable) 实际情况是filter函数:filter()为已知的序列的每个元素调用给定的布尔函 ...
- linux进程的挂起和恢复
进程的挂起及恢复 #ctrl+z:挂起,程序放到后台,程序没有结束. #jobs:查看被挂起的程序工作号 恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前台执行:用bg命令将挂起的作业放到后台 ...
- struts2客户端与服务器端即jsp页面与action之间的关系
在Struts2中,客户端和服务器之间的数据传输全部要用到get.set方法:用set方法 ,可以将表单中的值存入Action类.通过Struts2.0标签,调用get方法将Action类中的结果数据 ...
- (笔记)linux 进程和线程的区别
进程:进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集.从内核的观点看,进程的目的就是担当分配系统资源(CPU时间.内存等)的基本单位. 线程:线程是进程的一个执行流,是CPU ...
- e810. 创建弹出菜单
final JPopupMenu menu = new JPopupMenu(); // Create and add a menu item JMenuItem item = new JMenuIt ...
- perl学习(二)正则表达式
模式分组: /fred+/会匹配freddd这样的 /(fred)+/会匹配fredfredfred这样的 /(fred)*/则会匹配abcdef任意的 圆括号同时也使得重新使用某些字符串成为可能.反 ...
- AngularJS $http模块POST数据,后台接受不到
1.问题: 后端接收不到AngularJs中$http.post发送的数据,总是显示为null 示例代码: $http.post(/admin/KeyValue/GetListByPage, { pa ...