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.Set
object 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.Set
object 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.Set
import scala.collection.mutable.ArrayBuffer
object 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("
");
// for(i <- prefix) print(i+"->");//
// println("《=前缀");
// for(i <- suffix) print(i+"->");//
// println("<=后缀");
}
}
12、列表的折叠化简操作
import scala.collection.mutable.Set
import scala.collection.mutable.ArrayBuffer
object 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);
}
}