题目来源
package com.bigdata
import java.util.Date
import scala.collection.convert.ImplicitConversions.`set AsJavaSet`
import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer
object testDemo01
{
def t5(): Unit =
{
var set = Set(10, 20, 30, 40, 50)
var list = List(100, 200, 300)
var res = set ++ list
res.foreach(i => println(i))
}
def t7(): Unit =
{
var set = Set(5, 6, 7, 8)
println(set.mkString)
}
// 集合中使用+=添加元素9
def t8(): Unit =
{
var set = Set(5, 6, 7, 8)
set += 9
println(set)
}
// 集合中删除元素5
def t9(): Unit =
{
var set = Set(5, 6, 7, 8)
set -= 7
print(set)
// Set(5, 6, 8)
}
// 集合使用add添加元素10
def t10(): Unit =
{
var set = Set(5, 6, 7, 8)
set.add(9)
println(set)
/*
* 如果这样直接使用,会报错的。报错内容如下:
* Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractCollection.add(AbstractCollection.java:262)
* */
}
/* 构建一个映射map1,内容为"zhangsan" -> 20, "lisi" -> 18, "wangwu" -> "22"*/
def t11(): Unit =
{
val map1 = Map("zhangsan" -> 20, "lisi" -> 21, "wangwu" -> "22")
println(map1)
// 输出:Map(zhangsan -> 20, lisi -> 21, wangwu -> 22)
}
/*构建一个空的映射map3,参数类型为Map[String, Int]*/
def t12(): Unit =
{
val map3 = Map[String, Int]()
println(map3)
// 输出:Map()
}
/*构建一个映射map2,内容为"zhangsan" -> 20, "lisi" -> 18, "wangwu" -> "22"
* 且:获取map2中的lisi的年龄
* */
def t13(): Unit =
{
val map2 = Map("zhangsan" -> 20, "lisi" -> 21, "wangwu" -> 22)
println(map2("lisi"))
// 输出:21
}
/*构建一个映射map2,内容为"zhangsan" -> 20, "lisi" -> 18, "wangwu" -> "22"
* 且:获取map2中的key值
* */
def t14(): Unit =
{
val map2 = Map("zhangsan" -> 20, "lisi" -> 21, "wangwu" -> 22)
print(map2.keys)
// 输出:Set(zhangsan, lisi, wangwu)
map2.keys.foreach(i => print(i + " "))
// 输出:zhangsan lisi wangwu
/*获取所有的map2中的value值*/
println()
map2.values.foreach(i => print(i + " "))
// 输出20 21 22
/*map2中新增一组数据:zhaoliu,25*/
println()
// map2 += ("zhaoliu"->25)
// 如果如上面这样写时不对的,因为map2是 val ,如果我们想增加,需要继承一个var
var map22 = map2
map22 += ("zhaoliu" -> 25)
println(map22)
// 输出:Map(zhangsan -> 20, lisi -> 21, wangwu -> 22, zhaoliu -> 25)
/*遍历打印所有的key和value*/
for ((key, value) <- map22) println(key + "\t" + value)
/*输出:
* zhangsan 20
lisi 21
wangwu 22
zhaoliu 25
* */
println()
for (x <- map22) print(x)
// 输出:(zhangsan,20) (lisi,21) (wangwu,22) (zhaoliu,25)
}
/*编写一个方法method1,输入分数之后能够打印出不及格(小于60分)、及格(60-80)、良好(80-90)、优秀(大于90)*/
def method1(int: Int): Unit =
{
if (int < 60)
{
println(s"= 不及格:${int}")
}
else if (int >= 60 && int < 80)
{
println(s"= 及格:${int}")
}
else if (int >= 80 && int < 90)
{
println(s"= 良好:${int}")
}
else
{
println(s"=优秀:${int}")
println("优秀=%d", int)
}
/*输出:=优秀:92
(优秀=%d,92)*/
}
// 编写一个方法method3,要求能够输入一个大于0的数字参数,能够打印1到该数字范围内的所有数。(2种方式)
def method3(num: Int): Unit =
{
if (num > 0)
{
for (i <- 1 to num) print(i + " ")
}
/*输出:1 2 3 4 5 6 7 8 9 10 */
println()
// 第二种方式:
for (i <- 1 to num if (num > 0)) print(i + " ")
// 输出:1 2 3 4 5 6 7 8 9 10
}
// 编写一个方法method4,要求能够输入一个大于0的数字参数,能够打印1到该数字范围内的所有偶数。
def method4(num: Int): Unit =
{
for (i <- 1 to num if (i % 2 == 0)) print(i + " ")
/*输出:2 4 6 8 10 */
}
// 编写一个方法method5,要求能够输入一个大于0的数字参数,能够打印1到该数字范围内的所有奇数,并且该奇数不能被5整除。
def method5(num: Int): Unit =
{
for (i <- 1 to num if (i % 2 != 0 && i % 5 != 0)) print(i + " ")
/*输出:1 3 7 9 11 13 17 19 21 23 */
}
// 编写一个方法method6,要求可以输入任意多个参数(数字类型),将每个参数乘以100后放入数组并返回该数组。
/*此题重点在于:!!!! 输出任意多个参数!!!!*/
def method6(num: Int*): Unit =
{
var numsArray = new ArrayBuffer[Int]()
for (i <- num)
{
var temp = i * 100
numsArray += temp
}
println(numsArray)
/*输出:ArrayBuffer(100, 200, 300, 400, 500, 600)*/
}
// 编写一个方法method7,要求输入一个数字,如果数字大于150则抛出异常,并捕获该异常,捕获异常后打印The number is greater than 150。
def method7(num: Int): Unit =
{
if (num > 150) throw new Exception(" The number is greater than 150")
/*输出:Exception in thread "main" java.lang.Exception: The number is greater than 150
at com.bigdata.testDemo01$.method7(testDemo01.scala:193)*/
}
// 编写一个方法method8,要求传入两个参数,默认值分别为10,15,返回两个参数的乘积。
def method8(num1: Int = 10, num2: Int = 15): Unit =
{
println(num1 * num2)
}
/*定义一个名为method9的方法,有三个参数,前两个为数字类型,
最后一个参数为f1函数(该函数类型参数接受两个数字类型参数,返回值也是数字类型),
该method9方法返回值为数字类型。
定义一个函数f1两个参数分别为x,y都为数字类型,执行返回结果是两个参数的和*/
// 这道题不太懂
var function = (a: Int, b: Int) => a + b
def method9(x: Int, y: Int, f1: (Int, Int) => Int): Int =
{
f1(x, y)
}
/*编写一个方法method10,要求有两个参数,两个参数都为大于0的数字,
要求能够打印1到第一个参数数字范围内的所有数,在打印过程中遇到与第二个参数相乘大于200就停止。
*/
def method10(num1: Int, num2: Int): Unit =
{
for (i <- 1 to num1 if (i * num2 < 200)) print(i + " ")
// 输出:1 2 3 4
}
// 定义一个数组arr1内容为1-10
def a1(): Unit =
{
var arrays = new ArrayBuffer[Int]()
for (i <- 1 to 10) arrays += i
println(arrays)
// 输出:ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
}
// 使用filter过滤器,过滤出来偶数
def a2(): Unit =
{
var arrays = new ArrayBuffer[Int]()
for (i <- 1 to 10) arrays += i
println(arrays.filter(_ % 2 == 0).mkString)
// 输出:246810
}
// 使用map把arr1数组中每一个元素都取出arr(i)-=arr(i)来放到一个全新数组
def a3(): Unit =
{
var arrays = new ArrayBuffer[Int]()
for (i <- 1 to 10) arrays += i
/*映射原数组的元素 到一个新的数组*/
var ints = arrays.map(x => x)
println(ints)
/*输出:ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)*/
// 翻转数组ints
println(ints.reverse)
/*输出:ArrayBuffer(10, 9, 8, 7, 6, 5, 4, 3, 2, 1)*/
// 修改数组arr1中下标为0的数据为100
ints(0) = 100
println(ints)
/*输出:ArrayBuffer(100, 2, 3, 4, 5, 6, 7, 8, 9, 10)*/
// 删除arr1数组下标为0的数据
ints -= ints(0)
println(ints)
/*输出:ArrayBuffer(2, 3, 4, 5, 6, 7, 8, 9, 10)*/
// arr1数组从下标2开始,删除3个元素
for (i <- 2 to ints.length - 1 if (i < 2 + 3)) ints -= ints(i)
println(ints)
/*输出:ArrayBuffer(2, 3, 5, 7, 9, 10)*/
// 插入数据到arr1数组, 第一个参数是开始的位置,插入50,66,77
ints.insert(0, 50)
ints.insert(0, 66)
ints.insert(0, 77)
println(ints)
/*输出:ArrayBuffer(77, 66, 50, 2, 3, 5, 7, 9, 10)*/
// 对arr1数组进行降序排列
println(ints.sorted.reverse)
/*输出:ArrayBuffer(77, 66, 50, 10, 9, 7, 5, 3, 2)*/
}
// 定义一个列表list1,内容为("a", "b" ,"c","d","e")
def list1(): Unit =
{
var list1 = List("a", "b", "c", "d", "e")
println(list1)
// 在list1列表开头添加元素t
var value = "t" :: list1
println(value)
/*输出: List(t, a, b, c, d, e)*/
// 在列表开头添加指定列表List("m","n")的元素
var value1 = List("m", "n")
var temp = value1.mkString :: list1
println(temp)
/*List(mn, a, b, c, d, e)*/
// 在列表list1后添加元素1
var temp2 = list1 :+ "1"
println(temp2)
/*输出:List(a, b, c, d, e, 1)*/
// 将列表的所有元素添加到 StringBuilder
var builder = new StringBuilder()
list1.addString(builder)
println(builder)
/*输出:abcde */
// 将列表的所有元素添加到 StringBuilder并指定分隔符为","
var temp3 = list1.addString(builder, ",")
println(temp3)
/*输出:abcdea,b,c,d,e */
// 检测列表中是否包含指定的元素a
println(list1.contains("a"))
/*输出: true */
// 去除list1列表的重复元素,并返回新列表
val list2 = list1.distinct
println(list2)
}
// 创建一个元组Y1,内部含有zhangsan biejing 20 true 四个数据
def t71(): Unit =
{
var tuple1 = ("zhangsan", "beijing", "20", true)
println(tuple1.toString())
/*输出: (zhangsan,beijing,20,true) */
// 获取元组Y1内的第二个元素(biejing)
println(tuple1._2)
/*输出:beijing*/
}
// 创建一个元组Y2,内部含有(zhangsan ,lisi,wangwu,zhaoliu),(20,30,40,50),(1,0,1,0) 3个数据(每个内部依然是元组)。
def t72(): Unit =
{
val tuple = (("zhangsan", "lisi", "wangwu", "zhaoliu"), (20, 30, 40, 50), (1, 0, 1, 0))
// 获取zhangsan,并输出
println(tuple._1._1)
/*输出: zhangsan*/
// 获取lisi 的年龄,并输出
var it = tuple._1
}
// 定义一个迭代器iter1,数据为"Hadoop","Spark","Java"
def t77(): Unit =
{
var iter1 = Iterator("Hadoop", "Spark", "Java");
while (iter1.hasNext)
{
println(iter1.next())
}
/*输出:Hadoop
Spark
Java*/
}
def main(args: Array[String]): Unit =
{
// method1(92)
// method3(10)
// method4(10)
// method5(25)
// method6(1,2,3,4,5,6)
// method7(500)
// method8(2,5)
// method9(10, 20, function)
// method10(10,40)
// a1()
// a2()
// a3()
// list1()
// t71()
// t72()
}
t77()
}