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 集合(⑧)的更多相关文章

  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. Ext.dom.Element 常用方法解析

    Ext.dom.Element 常用方法解析 Ext.Element,Ext.core.Elemen,Ext.dom.Element 这几个类都是一个类,在EXT当中给起了别名而已,这个类到作用主要是 ...

  2. 在 Android studio 中 配置Gradle 做到 “根据命令行提示符生成指定versionCode, versionName,指定apk的打包输出路径”

    需求: 1. 使用 Android studio ,使用 gradle 进行构建 2. 在实际开发中,我们需要使用jenkins进行打包.就需要配置我们的 gradle 脚本以支持参数化的方式. 3. ...

  3. JSP之静态include指令、动态Include指令

    (一)使用静态include指令 <%@ page language="java" contentType="text/html; charset=gb2312&q ...

  4. Mac OS, Mac OSX 与Darwin

    作为收购 NeXT 公司的结果,苹果公司获得了 NeXTSTEP 架构中的 Mach 和 Objective-C 等设计.尽管 NeXTSTEP 本身已经不再发展了,但是其中的组件在 OS X 中获得 ...

  5. 自然语言交流系统 phxnet团队 创新实训 项目博客 (十)

      关于本项目中使用到的庖丁分词的总结:   Paoding 详细介绍 庖丁中文分词库是一个使用Java开发的,可结合到Lucene应用中的,为互联网.企业内部网使用的中文搜索引擎分词组件.Paodi ...

  6. 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。

    题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在ACSII码范围内. 输出描述: 输出范围在( ...

  7. python-下载百度图片到本地

    import requests import os def getManyPages(keyword,pages): params=[] for i in range(30,30*pages+30,3 ...

  8. InnoDB和MyISAM的区别与选择

    MyISAM 性能(适合小项目,读快速)MyISAM 是MySQL中默认的存储引擎,比如适合新闻系统,读为主.InnoDB 事务或外键支持(适合大项目,高并发读写)活跃用户20多万时候,也能很轻松应付 ...

  9. Linux-HA实战(2)— TFS Nameserver HA之虚拟IP

    对TFS的Nameserver做机器级别的HA通过虚拟IP机制就可以了,只需要一个Heartbeat就可以搞定,下面简单说下步骤. 操作系统:CentOS 6.4 x86_64 Heartbeat: ...

  10. c#中的对象生命周期

    无论是指类型的变量或是类类型的变量,其存储单元都是在栈中分配的,唯一不同的是类类型的变量实际上存储的是该类对象的指针,相当于vc6中的CType*,只是在.net平台的语言中将指针的概念屏蔽掉了.我们 ...