数组
scala中集合主要分为两类,可变(mutable)和不可变(immutable)
package chapter03 //java 中的集合List,Set,Map //List:有序,可重复 ArrayList,LinkedList //Set:无序,不可重复 Mapset,TreeSet //Map:无序,(key,value)中key不能重复,value可重复,HashMap,HashTable,TreeMap //数组:不可改变 //scala中集合主要分为两类,可变(mutable)和不可变(immutable) object test01 { //public static void main(String[] args) def main(args:Array[String]):Unit={ //java数组:int[] ints=new int[3] //赋值:ints[0]=1 //取值:int i=ints[0] //Array;不可变数组 val ints:Array[Int] = Array(1,2,3,4) //查询值 println(ints(0)) //修改值 ints.update(1,9) println(ints.mkString(",")) //增加值,产生新的数组 val ints1:Array[Int]=ints:+(5) val ints2:Array[Int]=5+:(ints) println(ints1.mkString(",")) println(ints2.mkString(",")) println(ints==ints1) //false //长度length println(ints.length) //将数组转化为字符串打印出来 println(ints.mkString(",")) //遍历值 for (elem <- ints) { println(elem) } //ints.foreach((i:Int)=>{println(i)}) //ints.foreach((i)=>{println(i)}) //ints.foreach({println(_)}) //ints.foreach(println(_)) //ints.foreach(println) //可变数组:ArrayBuffer import scala.collection.mutable.ArrayBuffer val ab:ArrayBuffer[Int] = ArrayBuffer(5,6,7,8) //查询值 println(ab(0)) //修改值 ab(0)=11 println(ab(0)) //增加数据,按索引 ab.insert(1,9) println(ab.mkString(",")) //删除元素:按索引 ab.remove(1) ab.remove(1,2) //遍历值 ab.foreach(println) //可变数组-->不可变数组 val buffer = ints.toBuffer //不可变数数组-->可变数组 val array = ab.toArray } }
package chapter03 import java.util import scala.collection.mutable.ArrayBuffer object test12 { def main(args:Array[String]):Unit={ //scala数组==》java数组 val arrayScala = ArrayBuffer("1","2","3","4") import scala.collection.JavaConversions.bufferAsJavaList val arrayJava = new ProcessBuilder(arrayScala) val strings: util.List[String] = arrayJava.command() println(strings) //java数组==》scala数组 import scala.collection.JavaConversions.asScalaBuffer import scala.collection.mutable val scalaArr:mutable.Buffer[String]=strings println(scalaArr) } }
package chapter02 import scala.collection.mutable.ArrayBuffer object test01 { def main(args:Array[String]):Unit={ //定义二维数组 val rows = 3 val cols = 5 val chessMap1: Array[Array[Int]] = Array.ofDim[Int](rows,cols) chessMap1(1)(1) = 1 chessMap1(2)(0) = 2 //遍历二维数组 for ( i <- 0 until chessMap1.length){ for ( j <- 0 until chessMap1(i).length){ printf("%d ",chessMap1(i)(j)) } println() } //对二维数组压缩 //创建ArrayBuffer,动态的压缩数据 //用node对象表示一个数据 val sparseArray = ArrayBuffer[Node]() sparseArray.append(new Node(rows,cols,0)) //遍历chessMap1,如果发现一个非零的对象,则加入sparseArray for ( i <- 0 until chessMap1.length){ for ( j <- 0 until chessMap1(i).length){ val result = chessMap1(i)(j) if (result != 0){ sparseArray.append(new Node(i,j,result)) } } } println("稀疏数组是: ") for(i<- 0 until sparseArray.length){ val node = sparseArray(i) printf("%d %d %d \n",node.row,node.col,node.value) } //将稀疏数组恢复成二维数据 val col_2 = sparseArray(0).col val row_2 = sparseArray(0).row val chessMap2 = Array.ofDim[Int](row_2,col_2) for (i <- 1 until sparseArray.length){ val col_res = sparseArray(i).col val row_res = sparseArray(i).row val value_res = sparseArray(i).value chessMap2(row_res)(col_res)=value_res } println("恢复后的二维数组:") for (i <- 0 until chessMap2.length){ for (j <- 0 until chessMap2(i).length){ printf("%d ",chessMap2(i)(j)) } println() } } } class Node(val row:Int,val col:Int,val value:Int){ }
posted on 2019-09-18 18:06 happygril3 阅读(144) 评论(0) 收藏 举报
浙公网安备 33010602011771号