Scala-集合
来源:互联网 发布:上海linux运维培训 编辑:程序博客网 时间:2024/06/07 12:49
1、空集合Nil,以及右结合
object controllAbstract { def main(args: Array[String]): Unit = { //向空集合Nil中添加元素 //双冒号是右结合 // println((1::2::Nil)); //List(1, 2) val list = List(1,2,4); val list1 = 8::list;//创造了一个新集合,原来的list集合元素没有变 println(list); println(list1); //List(1, 2, 4)// List(8, 1, 2, 4) }}
2、递归方法求list元素之和
object controllAbstract { def sum(list: List[Int]):Int ={ if(list == Nil) 0 else list.head+sum(list.tail);//从头部开始一个一个元素取出来 } def main(args: Array[String]): Unit = { val list = List(1,3,4); val result = sum(list); println(result); }}
3、模式匹配case match
object controllAbstract {//模式匹配 def sum(list: List[Int]):Int = list match { case Nil =>0 case a::b => a + sum(b);//将list集合拆分成头部a和尾部集合b //其实也是相当于list.head+sum(list.tail)的递归 } def main(args: Array[String]): Unit = { val list = List(1,3,4,5,6); val result = sum(list); println(result); }}
4、可变列表linkedlist
import scala.collection.mutable._object controllAbstract { def main(args: Array[String]): Unit = { //可变列表linkedlist val list = LinkedList(12,4,4,0,-2,-9); var cur = list; while (cur!=Nil){ if(cur.elem < 0) cur.elem =0; cur = cur.next; } for(i <- list) println(i); }}
import scala.collection.mutable._object controllAbstract { def main(args: Array[String]): Unit = { //可变列表linkedlist val list = LinkedList(12,4,4,0,-2,-9); var cur = list; while (cur!=Nil){ if(cur.elem < 0) cur.elem =0; cur = cur.next; println(cur); } /* LinkedList(4, 4, 0, -2, -9)LinkedList(4, 0, -2, -9)LinkedList(0, -2, -9)LinkedList(-2, -9)LinkedList(-9)LinkedList() */// for(i <- list) println(i); }}
5、添加元素操作符
object controllAbstract { def main(args: Array[String]): Unit = { val list = List(1,3,4); val list2 = list:+2;//左结合,加在list集合后面 val list3 = 3::list;//右结合,加在list前面 for(j<- list) print(j); println("==="); for(i<- list2) print(i); println("===="); for(k<- list3) print(k); /*134=== 1342==== 3134 */ }}
6、set集合
object controllAbstract { def main(args: Array[String]): Unit = { val set = Set(1,2,3); val set1 = set + (12); for(i <- set1) print(i+","); println("========"); for(i <- set) print(i+","); }}
7、集合相加
object controllAbstract { def main(args: Array[String]): Unit = { val list = List(1,3,4); val list1 = List(1,2,4); val list2 = list ++ list1;//任意两个集合相加 for(i <- list2) print(i); }}
8、++: –》任意两个集合 右结合
object controllAbstract { def main(args: Array[String]): Unit = { val list = List(1,4); val list1 = List(2,3); val list2 = list ++:list1;//表示在list1前面加list val list3 = list1 ++: list;//等价于::: val list4 = list1 ++ list;//等价于:: for(i<- list2) print(i); println("=="); for(i<- list3) print(i); println("=="); for(i<-list4) print(i); /* 1423== 2314== 2314 */ }}
9、set集合的交集,并集,差异集合
object controllAbstract { def main(args: Array[String]): Unit = { val set = Set(1,3,5); val set1 = Set(1,2,5); val set2 = set | set1;//并集 for(i <- set2) print(i+"-"); println("=="); val set3 = set & set1;//交集 for(i<- set3) print(i+"-"); println("=="); val set4 = set &~ set1;//两个集合的差异元素 println("=="); for(i<-set4)print(i+"-");/*1-3-5-2-==Disconnected from the target VM, address: '127.0.0.1:58811', transport: 'socket'1-5-====3- */ }}
10、+= /++=/-=/–=操作的是可变集合
import scala.collection.mutable.Setobject controllAbstract { def main(args: Array[String]): Unit = { val set = Set(1,2,4);//这里的set是可变的集合 set +=11; for(i<-set) print(i+"->"); }}
import scala.collection.mutable.Setobject controllAbstract { def main(args: Array[String]): Unit = { val set = Set(1,2,4,5,6,7,8);//这里的set是可变的集合 val set1 = Set(5,6); set +=11;//+=用来操纵元素 ++=用来操作集合 set -= 1; set --= set1;//--=也用来操作集合 for(i<-set) print(i+"->"); //2->7->4->11->8-> }}
11、take,drop,splitAt,ZIP
import scala.collection.mutable.Setimport scala.collection.mutable.ArrayBufferobject controllAbstract { def main(args: Array[String]): Unit = { //拉链操作 val arr = Array(5, 6, 6, 7, 1, 2, 4); val arr1 = ArrayBuffer(23, 4, 5, 6); val arr5 = ArrayBuffer("hello","world","nihao"); val arr2 = arr.zip(arr1); for(i<-arr2) print(i+"->");//(5,23)->(6,4)->(6,5)->(7,6)-> println(); val arr3 = arr.zipAll(arr1,-1,-2);//表示的意思是如果arr1不够就用-2,arr不够就用-1 for(i<-arr3)print(i+"<-");//(5,23)<-(6,4)<-(6,5)<-(7,6)<-(1,-2)<-(2,-2)<-(4,-2)<- val arr4 = arr.zipWithIndex;//和自己的索引形成元组(5,0)->(6,1)->(6,2)->(7,3)->(1,4)->(2,5)->(4,6)-> println(); for(i<-arr4)print(i+"->"); val arr6 = arr5.map(_.toUpperCase());//利用高阶函数map将数组的每个元素都转换为大写ELLO<-WORLD<-NIHAO<- println(); for(i<-arr6)print(i+"<-"); //******************************************** // val arr1 = arr.init;//去掉了最后一个元素 // val arr1 = arr.take(2);//获取前两个元素 // val arr1 = arr.drop(2);//删除前两个元素 // val (prefix,suffix) = arr.splitAt(3);//在第三个元素的后面进行切割 // for(i<-arr) print(i+"->"); // println("\n"); // for(i <- prefix) print(i+"->");// // println("《=前缀"); // for(i <- suffix) print(i+"->");// // println("<=后缀"); }}
12、列表的折叠化简操作
import scala.collection.mutable.Setimport scala.collection.mutable.ArrayBufferobject controllAbstract { def main(args: Array[String]): Unit = { val list = List(2,5,6); //列表的折叠操作 val result = list.foldRight(1)(_ - _);//将初始值放在右边 //2 -(5 -(6 -1))=2 println(result); val result1 = list.foldLeft(1)(_ - _);//将初始值放在左边 //((1 -2) -5) -6=-12 println(result1); }}
阅读全文
0 0
- Scala集合
- Scala集合
- Scala 集合
- Scala集合
- scala集合
- Scala集合
- scala 集合
- scala------集合
- scala 集合
- scala集合
- scala 集合
- scala集合
- Scala集合
- Scala集合
- scala集合
- scala 集合
- Scala集合
- Scala--集合
- openwrt实现挂载usb摄像头及视频保存
- 有一个由0和1组成的数组。 用给定的m 0和n 1来形成的最大字符串数量。每个0和1最多可以使用一次。
- mybatis实现原理
- mqtt
- (转)Android开发实现高德地图定位详解
- Scala-集合
- 14个JavaScript调试技巧
- HTTP协议
- 集合框架2
- C#对象数组 对应js与ts之间的转换
- js正则密码验证密码至少包含大写字母,小写字母,数字,且不少于8位
- Android 获取手机型号、信号强度、厂商等信息
- 算法导论-证明强连通分量算法
- jQuery对象 与 js对象 区别与联系