scala-04-set操作
Scala Set(集合)是没有重复的对象集合,所有的元素都是唯一的。
Scala 集合分为可变的和不可变的集合。
默认情况下,Scala 使用的是不可变集合,如果你想使用可变集合,需要引用 scala.collection.mutable.Set 包。
1, 获取set集合
def getSet(): Set[String] = {
val mutableSet = Set("", "", "")
println(mutableSet.getClass.getName)
mutableSet
}
2, 添加和删除元素
def addAndRemove(mutableSet: Set[String]): Unit = {
mutableSet.add("eqwr")
mutableSet.remove("eqwr")
mutableSet += "asdf"
}
3, 基础操作
def baseControl(multSet: Set[String]): Unit = {
println("获取第一个个值" + multSet.head)
println("获取第一个之后值" + multSet.tail)
println("是否为空" + multSet.isEmpty)
}
4, 集合连接
def concatSet(set1: Set[String])(set2: Set[String]): Set[String] = {
// 使用 ++ 链接
var site = set1 ++ set2
var site2 = set1.++(set2)
site
}
5, 求最值
def minMax(multSet: Set[Int]): Int = {
println(multSet.max)
println(multSet.min)
multSet.max
}
6, 求交集
def interSec(set1: Set[Int], set2: Set[Int]): Set[Int] = {
var setss = set1.&(set2)
println(setss)
var setsss = set1.intersect(set2)
println(setsss)
setsss
}
常用 api
| 1 |
def +(elem: A): Set[A] 为集合添加新元素,x并创建一个新的集合,除非元素已存在 |
| 2 |
def -(elem: A): Set[A] 移除集合中的元素,并创建一个新的集合 |
| 3 |
def contains(elem: A): Boolean 如果元素在集合中存在,返回 true,否则返回 false。 |
| 4 |
def &(that: Set[A]): Set[A] 返回两个集合的交集 |
| 5 |
def &~(that: Set[A]): Set[A] 返回两个集合的差集 |
| 6 |
def +(elem1: A, elem2: A, elems: A*): Set[A] 通过添加传入指定集合的元素创建一个新的不可变集合 |
| 7 |
def ++(elems: A): Set[A] 合并两个集合 |
| 8 |
def -(elem1: A, elem2: A, elems: A*): Set[A] 通过移除传入指定集合的元素创建一个新的不可变集合 |
| 9 |
def addString(b: StringBuilder): StringBuilder 将不可变集合的所有元素添加到字符串缓冲区 |
| 10 |
def addString(b: StringBuilder, sep: String): StringBuilder 将不可变集合的所有元素添加到字符串缓冲区,并使用指定的分隔符 |
| 11 |
def apply(elem: A) 检测集合中是否包含指定元素 |
| 12 |
def count(p: (A) => Boolean): Int 计算满足指定条件的集合元素个数 |
| 13 |
def copyToArray(xs: Array[A], start: Int, len: Int): Unit 复制不可变集合元素到数组 |
| 14 |
def diff(that: Set[A]): Set[A] 比较两个集合的差集 |
| 15 |
def drop(n: Int): Set[A]] 返回丢弃前n个元素新集合 |
| 16 |
def dropRight(n: Int): Set[A] 返回丢弃最后n个元素新集合 |
| 17 |
def dropWhile(p: (A) => Boolean): Set[A] 从左向右丢弃元素,直到条件p不成立 |
| 18 |
def equals(that: Any): Boolean equals 方法可用于任意序列。用于比较系列是否相等。 |
| 19 |
def exists(p: (A) => Boolean): Boolean 判断不可变集合中指定条件的元素是否存在。 |
| 20 |
def filter(p: (A) => Boolean): Set[A] 输出符合指定条件的所有不可变集合元素。 |
| 21 |
def find(p: (A) => Boolean): Option[A] 查找不可变集合中满足指定条件的第一个元素 |
| 22 |
def forall(p: (A) => Boolean): Boolean 查找不可变集合中满足指定条件的所有元素 |
| 23 |
def foreach(f: (A) => Unit): Unit 将函数应用到不可变集合的所有元素 |
| 24 |
def head: A 获取不可变集合的第一个元素 |
| 25 |
def init: Set[A] 返回所有元素,除了最后一个 |
| 26 |
def intersect(that: Set[A]): Set[A] 计算两个集合的交集 |
| 27 |
def isEmpty: Boolean 判断集合是否为空 |
| 28 |
def iterator: Iterator[A] 创建一个新的迭代器来迭代元素 |
| 29 |
def last: A 返回最后一个元素 |
| 30 |
def map[B](f: (A) => B): immutable.Set[B] 通过给定的方法将所有元素重新计算 |
| 31 |
def max: A 查找最大元素 |
| 32 |
def min: A 查找最小元素 |
| 33 |
def mkString: String 集合所有元素作为字符串显示 |
| 34 |
def mkString(sep: String): String 使用分隔符将集合所有元素作为字符串显示 |
| 35 |
def product: A 返回不可变集合中数字元素的积。 |
| 36 |
def size: Int 返回不可变集合元素的数量 |
| 37 |
def splitAt(n: Int): (Set[A], Set[A]) 把不可变集合拆分为两个容器,第一个由前 n 个元素组成,第二个由剩下的元素组成 |
| 38 |
def subsetOf(that: Set[A]): Boolean 如果集合中含有子集返回 true,否则返回false |
| 39 |
def sum: A 返回不可变集合中所有数字元素之和 |
| 40 |
def tail: Set[A] 返回一个不可变集合中除了第一元素之外的其他元素 |
| 41 |
def take(n: Int): Set[A] 返回前 n 个元素 |
| 42 |
def takeRight(n: Int):Set[A] 返回后 n 个元素 |
| 43 |
def toArray: Array[A] 将集合转换为数字 |
| 44 |
def toBuffer[B >: A]: Buffer[B] 返回缓冲区,包含了不可变集合的所有元素 |
| 45 |
def toList: List[A] 返回 List,包含了不可变集合的所有元素 |
| 46 |
def toMap[T, U]: Map[T, U] 返回 Map,包含了不可变集合的所有元素 |
| 47 |
def toSeq: Seq[A] 返回 Seq,包含了不可变集合的所有元素 |
| 48 |
def toString(): String 返回一个字符串,以对象来表示 |
scala-04-set操作的更多相关文章
- scala 基本类型和操作
Scala基本类型 Scala中的基本数据类型如下图: (来源:Programming in scala) 从上表中可以看出,Scala的基本数据类型与Java中的基本数据类型是一一对应的,不同的是 ...
- Pipeline in scala——给scala添加管道操作
linux系统中管道这一功能相信大家肯定使用过,比如现在想找到用户目录下文件名包含db的所有文件,ls ~的结果,作为grep db的参数: ➜ ~ ls ~ | grep db kv.mv.db ...
- Scala函数高级操作
字符串高级操作:***** 非常重要 将函数赋值给变量/值def sayHello(name:String): Unit = { println(s"Hello:$name")} ...
- Scala的XML操作
8. XML 8.1. 生成 Scala原生支持xml,就如同Java支持String一样,这就让生成xml和xhtml非常easy优雅: val name = "james ...
- scala VS python2 操作shell对比例子
Scala: /** * Created by sunxu on 2015/9/30. */ import scala.sys.process._ import java.io.File //在相应目 ...
- scala文件流操作,生成sparkpv,uv作业文件
package com.bjsxt.scalaspark.core.examples.pvAnduv import java.io.Fileimport java.text.SimpleDateFor ...
- 大数据学习——scala类相关操作
1 类的定义 package com /** * Created by Administrator on 2019/6/3. */ //类并不用声明为public. class Person { // ...
- Ubuntu 16.04下操作iptables的技巧(解决Failed to start iptables.service: Unit iptables.service not found.或者/etc/init.d/iptables: 没有那个文件或目录)
/etc/init.d/iptables网上的解法应该都是基于CentOS 6去实践,而在CentOS 7中又被firewalld给取代,所以操作上的写法基本会改变,但是底层iptables则不会改变 ...
- xBIM 基础04 日志操作
系列目录 [已更新最新开发文章,点击查看详细] xBIM使用Log4Net来记录异常不适合的处理错误和警告.它在xBIM几何引擎中被大量使用来记录所有几何错误.如果您的文件看起来不太正确,则应 ...
- node.js整理 04网络操作
简介 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content- ...
随机推荐
- uva1653
本来想刷道签到题结果被卡住了.这题题意描述有点问题,数字又不一定都是个位数...难道是我英语太差了? digits就表示0~9这几个数?唉,还是太弱了.这题就是用了一个bfs,应该说还是有点意思的,直 ...
- Codeforces Round #264 (Div. 2) E. Caisa and Tree 树上操作暴力
http://codeforces.com/contest/463/problem/E 给出一个总节点数量为n的树,每个节点有权值,进行q次操作,每次操作有两种选项: 1. 询问节点v到root之间的 ...
- 最大m段子段和
hdu1024 最大m子序列和 给定你一个序列,让你求取m个子段(不想交的子段)并求取这m个子段和的最大值 从二维开始来看dp[i][j]表示取第j个数作为第i个子段的元素所得到的前i个子段和的最大值 ...
- Git和SourceTree配合使用
Git介绍 git是当今最强大的本地的分布式代码版本管理工具. git的核心概念与操作:开发环境,本地仓库,远程仓库.他们的关系如下图: 与CVS及SVN的比较: CVS及SVN都是集中式的版本控制系 ...
- Java设计模式详尽资料
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- Delphi cxGrid使用汇总(一)
1. 去掉cxGrid中台头的Box解决:在tableview1的ptionsview的groupbybox=false; 2.统计功能解决:(1) tableview1. tableview1的op ...
- Android-Java构造代码块&构造方法隐式三行
构造代码块: 描述Teacher对象/实体: package android.java.oop06; public class Teacher { private int id = 007; priv ...
- Elasticsearch 系列4 --- Windows10安装Kibana
Kibana是Elastic Stack家族内的一部分,它是一个管理网站,与ES(Elastic Search)集成可以用来管理ES的索引,除ES外它还可以跟Elastic家族的其他组件进行整合如lo ...
- [翻译] ASP.NET WebAPI 中的异常处理
原文链接:https://docs.microsoft.com/en-us/aspnet/web-api/overview/error-handling/exception-handling 本文介绍 ...
- UWP Button添加圆角阴影(一)
原文:UWP Button添加圆角阴影(一) 众所周知,17763之前的UWP控件,大部分是没有圆角属性的:而阴影也只有17763中的ThemeShadow可以直接在xaml中使用,之前的版本只能用D ...