Scala如何对List中的数据进行分组

Scala如何对List中的数据进行分组(无期-瑶瑶)

1.为什么需要这样做

我们经常会遇到这样一种问题(以User对象和Role对象举例,一对多的问题),有两个List集合,一个存放着User对象,一个存放着Role对象.他们之间的关系可以通过User中的roleId对应Role中的id。这时,我想把Role对象中的数据添加到User对象中去。那么此问题便产生了。当然你们会觉着为什么不在数据库查出来就用inner解决呢,不这么做有两个原因:1.对象型数据库不支持inner操作。2.inner对数据库的负担较重。

 

2.怎么解决?

首先先列举第一种办法,比较下:

(1).直接遍历两个List,将数据进行拼接。

val listUser = List(user1, user2, user3)
val listRole = List(role1, role2, role3)
listUser.map{user=>
    val roleId = user.getRoleId
var roleStr = "" val roleName
= listRole.foreach{role=>
if(role.getId == roleId) roleStr = roleStr + "-" + role.getName
}
user.setRoleName(roleName) }

 

(2).先对一个RoleList进行分组,key存roleId,value存放List[Role]

val roleMap: Map[String, List[Role]] = Map[String, List[Role]]()    //利用Map进行分组
listRole.foreach { role=>  
        val roleId= role.getId
        roleMap.get(roleId) match {
          case Some(id) =>//包含取出来添加进List
            roleMap+= (roleId -> id.:+(role))
          case None =>  //不包含
            roleMap+= (roleId-> List(role))
      }
  }

listUser.map{user=>
   user.setRoleName(roleMap.get(user.getRoleId).getOrElse(""))
}

 

 

 

 

对于这两种数据的处理,我个人喜欢第二种

 

  

  

 

转载于:https://www.cnblogs.com/Shock-W/p/6632630.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值