统计用户消费排名
简单介绍
map 方法主要是一对一映射,取出集合中的每个元素,执行操作,返回值和集合的类型一致。
要求:
- 使用
List
集合定义用户的消费信息 - 根据消费总额,使用集合操作并统计用户消费排名
消费字段包括:用户名,姓名,手机号,消费额等信息。
此处使用的是 scala
语言。
用户数据具体代码如下:
var list1=List(
("id"->1,"name"->"Zhangsan","consume"->200,"tel"->"19133960587"),
("id"->2,"name"->"Lisi","consume"->300,"tel"->"16139605871"),
("id"->1,"name"->"Zhangsan","consume"->100,"tel"->"19133960587"),
("id"->3,"name"->"Xiaozhang","consume"->500,"tel"->"15339620987"),
("id"->4,"name"->"Xiaoli","consume"->800,"tel"->"15738930587"),
("id"->1,"name"->"Zhangsan","consume"->600,"tel"->"19133960587")
)*
先对用户数据使用 map 方法,将数据中的 id 与 consume 取出并放入到 list2 中,通过 id 对数据进行分组【利用 groupBy 方法】,对每个消费者的的消费进行整合并对其进行排序。代码如下:
var list2=list1.map(x=>(x._1._2,x._3._2));
println("-----------把id和消费金额提出------------");
println(list2);
var map=list2.groupBy(x=>x._1);
println("----------------分组后-----------------");
println(map);
var list_sum=map.map(x=>(x._1,x._2.map(y=>y._2).sum));
println("---------每个id消费者消费金额---------");
println(list_sum);
var list3=list_sum.toSeq.sortBy(x=>x._2).reverse;
println("---------------排序后----------------");
println(list3);
结果如下图: