map与list
package tcode.chapter05.practiseimport java.utilobject $11_GroupBy {/*** 4、根据指定规则对集合中的元素进行分组* 数据: Array("zhangsan 男 shenzhen","lisi 女 beijing","zhaoliu 男 beijing")* 规则: 根据地址分组 [可变]* 结果: Map(shenzhen->List( "zhangsan 男 shenzhen" ), biejing->List( "lisi 女 beijing","zhaoliu 男 beijing") )**/def main(args: Array[String]): Unit = {val datas = Array("zhangsan 男 shenzhen","lisi 女 beijing","zhaoliu 男 beijing")val func = (x:String) => x.split(" ")(2)val func2 = (x:String) => x.split(" ")(1)println(groupBy(datas, func))println(groupBy(datas, (x:String) => x.split(" ")(1)))println(groupBy(datas, x => x.split(" ")(1)))println(groupBy(datas, _.split(" ")(1)))}def groupBy(datas:Array[String],func: String => String) = {val map = new util.HashMap[String,util.List[String]]()//Map("shenzhen"->List( .. ))for(element<- datas){val key = func(element)//判断key在map中是否存在,如果存在,直接将元素添加到list中if(map.containsKey(key)){map.get(key).add(element)}//如果不存在,创建LiSt,将元素添加进去else{val list = new util.ArrayList[String] ()list.add(element)map.put(key,list)}}map}}
守护和普通if语句的一点区别:
守护:只有满足守护条件才进入方法体
if:无操作时,返回空值:()
package tcode.chapter05.practiseobject $09_Filter {/*** 2、根据指定规则对数据进行过滤* 数据: Array(10,2,4,5,7,9,20)* 规则: 过滤掉奇数数据 [可变]* 结果: Array(10,2,4,20)*/def main(args: Array[String]): Unit = {val datas = Array(10,2,4,5,7,9,20)val func = (x:Int) => x%2!=0println(filter(datas, func).toList)//可以用_简化println(filter(datas, _%2==0).toList)}def filter(datas:Array[Int],func: Int => Boolean ) ={for( element <- datas if( func(element) ) ) yield {element}// 这种情况不满足条件时会返回值类型:空值()// for (arr<- array if ) yeild {// if (func(arr)==0 ) {// arr// }// }}}
守卫结果:
·
不守卫结果:
