快学Scala习题解答—第三章 数组相关操作
4 数组相关操作
4.1 编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间
random和yield的使用
import scala.math.randomdef randomArray(n:Int)={ for(i <- 0 until n) yield (random * n).toInt}println(randomArray(10).mkString(","))def reorderArray(arr:Array[Int]):Array[Int]={ val t = arr.toBuffer for(i <- 1 until (t.length,2);tmp = t(i);j <- i - 1 until i){ t(i) = t(j) t(j) = tmp } t.toArray}println(reorderArray(Array(1,2,3,4,5)).mkString(","))def reorderArray(arr:Array[Int]):Array[Int]={ (for(i <- 0 until (arr.length,2)) yield if (i + 1 < arr.length) Array(arr(i + 1),arr(i)) else Array(arr(i))).flatten.toArray}println(reorderArray(Array(1,2,3,4,5)).mkString(","))//使用循环 def reorderArray(arr:Array[Int]):Array[Int]={ val a = ArrayBuffer[Int]() val b = ArrayBuffer[Int]() arr.foreach(arg => if(arg > 0) a += arg else b += arg) a ++= b a.toArray }//使用filterdef reorderArray(arr:Array[Int]):Array[Int]={ val a = arr.filter(_ > 0).map(1 * _) val b = arr.filter(_ <= 0).map(1 * _) val c = a.toBuffer c ++= b c.toArray}def aveArray(arr:Array[Double]):Double={ arr.sum/arr.length}def reverseArray(arr:Array[Int]):Array[Int]={ arr.reverse}def distinctArray(arr:Array[Int]):Array[Int]={ val t = arr.toBuffer t.distinct.toArray}def removeArray(arr:Array[Int]):Array[Int]={ val t = arr.toBuffer val idx = ArrayBuffer[Int]() for(i <- 0 until t.length){ if(t(i) < 0)idx += i } idx.remove(0) idx.reverse idx.foreach(t.remove(_)) t.toArray}val t = for(i <- getAvailableIDs) yield getTimeZone(i).getDisplayName()
val flavors = SystemFlavorMap.getDefaultFlavorMap().asInstanceOf[SystemFlavorMap]println(flavors.getNativesForFlavor(DataFlavor.imageFlavor).toArray.toBuffer.mkString(" | ")