scala集合之map方法的使用

统计用户消费排名

简单介绍
map 方法主要是一对一映射,取出集合中的每个元素,执行操作,返回值和集合的类型一致。

要求:

  1. 使用 List 集合定义用户的消费信息
  2. 根据消费总额,使用集合操作并统计用户消费排名

消费字段包括:用户名,姓名,手机号,消费额等信息。
此处使用的是 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);

结果如下图:
scala集合之map方法的使用_第1张图片

你可能感兴趣的:(scala,scala)