scala(List)

准在di

列表过滤:

scala> val info=List("lingang","wangfang","changhua","zhangjin","guanyu")
info: List[String] = List(lingang, wangfang, changhua, zhangjin, guanyu)
/*
e1、count函数原型是:(p: Any => Boolean)Int,将集合中每一个元素放入隐函数计算,并返回集合中满足条件(参数函数返回true)的元素数量 
*/
//使用隐函数计算info集合中元素的字符数为6的元素个数
scala> info.count(s=>6==s.length)
res26: Int = 1
//使用偏函数计算info集合中元素的字符数为6的元素个数
scala> info.count(6==_.length)
res1: Int = 1


/*
e2、exists函数原型是:(p: Any => Boolean)Boolean,只要集合中有一个元素满足条件(参数函数返回true)则exists函数返回true
*/
//判断集合info中是否存在元素的值为changhua的元素
//使用隐函数计算
scala> info.exists(s=>s=="changhua")
res3: Boolean = true
scala> info.exists(s=>s=="changshad")
res4: Boolean = false
//使用偏函数计算
scala> info.exists(_=="changhua")
res6: Boolean = true


/*
e3、forall函数原型是:(p: Any => Boolean)Boolean,集合中所有元素满足条件(参数函数返回true)则exists函数返回true;
该函数与exists函数是互补的,exists函数是描述or的关系,而forall是描述and的关系
*/
//判断集合info中的元素类型是否都是String类型
scala> info.forall(s=>s.getClass().getSimpleName()=="String")
res12: Boolean = true
scala> info.forall(_.getClass().getSimpleName()=="String")
res14: Boolean = true
scala> info.forall(s=>s.getClass().getSimpleName()=="Integer")
res13: Boolean = false
scala> List("lingang","chenghua").forall(_.getClass().getSimpleName()=="String")
res15: Boolean = true
scala> List("lingang","chenghua",50).forall(_.getClass().getSimpleName()=="String")
res16: Boolean = false
scala> List("lingang","chenghua").forall(_.getClass().getName=="java.lang.String")
res17: Boolean = true
scala> List("lingang","chenghua",100).forall(_.getClass().getName=="java.lang.String")
res19: Boolean = false


说明:
在Scala中比较字符串是否相同可以使用双等号,当然你使用equals方法来比较也是OK的:
scala> List("lingang","chenghua").forall(_.getClass().getName.equals("java.lang.String"))
res20: Boolean = true


/*
e4、filter函数原型是:(p: Any => Boolean)List[Any],过滤出满足条件(参数函数返回true)的所有元素并返回这些元素组成的子列表
*/
//过滤出字串长度为6的所有元素组成的子列表
scala> info.filter(s=>s.length==6)
res7: List[String] = List(guanyu)
scala> info.filter(_.length==6)
res9: List[String] = List(guanyu)


/*
e5、map函数原型是:(f: Any => B)(implicit bf: scala.collection.generic.CanBuildFrom[List[Any],B,That])That,将集合中的每一个元素使用map的参数函数处理并收集参数函数处理后的返回值组成的列表
*/
scala> List(10,20,30,40).map(s=>s+5)
res35: List[Int] = List(15, 25, 35, 45)
scala> List(10,20,30,40).map(_+5)
res37: List[Int] = List(15, 25, 35, 45)


/*
e6、foreach函数原型是:(f: Any => U)Unit,将集合中的每一个元素放入参数函数中去并调用参数函数处理,参数函数的返回类型根据参数函数体自动推断,foreach函数无返回值
*/
scala> info.foreach(s=>println(s))
lingang
wangfang
changhua
zhangjin
guanyu
scala> info.foreach(println(_))
lingang
wangfang
changhua
zhangjin
guanyu

猜你喜欢

转载自blog.csdn.net/fct2001140269/article/details/79950029