Scala-数组、集合、元组和文件

数组

一、一维数组的声明

var array = new Array[Int](10)
var array : Array[Int] = {}
var array = Array()
import scala.collection.mutable._
var array = ArrayBuffer[Int]()

二、多维数组的声明

var array = Array.ofDim[Int](3,4)
var array = new Array[Array[Int]](10)

映射(Map)

一、可变的Map

import scala.collection.mutable._
var map = Map("Destiny" -> 1,"Freedom" -> 2)
var map = Map(("Destiny",1),("Freedom",2))

二、不可变的Map

import scala.collection.immutable._
var map = Map("Destiny" -> 1,"Freedom" -> 2)
var map = scala.collection.immutable.Map(("Destiny",1),("Freedom",2))

三、Map的操作

//获取Map的Value
map("Freedom")
map.get("Freedom")
map.getOrElse("Freedom",-1)
//判断key是否存在
map.contains("Freedom")
//添加或移除新的元素
map += "Fate" -> 3
map -= "Fate" -> 3 
//更新Map的Value
map("Freedom") = 1
//Map的迭代
map.foreach(println)
for(s <- map)
println(s)

集合(List)

一、不可变的List

var list = List(1,2,3)
var nulList : List[Nothing] = List()
var dim : List[List[Int]] = List(List(1,2,3),List(4,5,6))

//查看第一个元素
list.head
//查看除第一个元素外的元素
list.tail

二、可变的LinkedList

import scala.collection.mutable._
var linkedList = LinkedList(1,2,3)

while(linkedList != Nil){
	//当前元素乘以2
	linkedList.elem = linkedList.elem * 2
	//移动指针到下一个元素
	linkedList = linkedList.next
}
//高阶函数
linkedList.map(_*2)

序列

一、Vector

Vector是一个带下标的序列,可以通过下标来访问Vector中的元素(不可变)

var vector = Vector(1,2,3)

二、Range

Vector是一个整数的序列

Range(0,5)
println(0 until 5)
print(0 to 5)
('0' to '9') ++ ('A' to 'Z')
//转成List
1 to 5 toList

一、Set

不重复元素的集合(不可变)

var s = Set(1,2,3)

二、SortedSet

可排序、可变的

import scala.collection.mutable._
var sortedSet = SortedSet(1,2,3)
//判断元素是否存在
sortedSet.contains(1)
//集运算
var s1 = Set(1,2,3,4,5,6)
var s2 = Set(5,6,7,8,9,10)
//并集
s1 union s2
//交集
s1 interset s2
//补集
s1 diff s2

元组(Tuple)

一、Tuple的声明

var tuple = Tuple3("Destiny","Freedom",1)
var tuple = ("Destiny","Freedom",1)

二、Tuple的操作

//获取某索引的值
tuple._1
//Tuple的迭代
tuple.productIterator.foreach(println)

文件操作

import java.io.{File, FileInputStream, PrintWriter}
import scala.io.Source._
object FileDemo {
  
  def main(args: Array[String]): Unit = {
    var source = fromFile("C:\\Users\\Administrator\\Desktop\\log.txt","GB2312")

    //将文件作为字符串输出
    println(source.mkString)

    //将文件的每一行读入并输出
    var line = source.getLines()
    line.foreach(println)

    //读取字符
    for (s <- source) println(s)

    //读取URL
    var url = fromURL("http://www.baidu.com","UTF-8")
    println(url.mkString)

    //Scala不支持读取二进制文件
    //通过调用java的InputStream来实现
    var file = new File("C:\\Users\\Administrator\\Desktop\\log.txt");
    //实例化FileInputStream
    var in = new FileInputStream(file)
    //创建一个buffer数组
    var buffer = new Array[Byte](file.length().toInt)
    //读取文件
    println(in.read(buffer))
    //关闭流
    in.close()

    //通过java来实现写文件
    var out = new PrintWriter("C:\\Users\\Administrator\\Desktop\\log.txt")
    for (s <- 0 until 10) out.println(s)
    //关闭流
    out.close()
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值