我有创造一些符合逻辑的一组这样的数据的algorythmic问题:
|-------|--------|
| id | ctx_id |
|-------|--------|
| 1 | 1001 |
| 1 | 1002 |
| 1 | 1003 |
| 1 | 1004 |
| 2 | 2001 |
| 2 | 2002 |
| 2 | 2003 |
------------------
这是列表我从数据库中获取,作为List<UsersContexts>
包含对象id
和ctx_id
。我想实现的,是创造这样的实体的两个对象:
private class UserData {
private long id;
private List<long> contextList;
}
每个用户都有一个ID,并分配给他的环境。我想实现的是操纵表上面,所以我可以创建两个数据UserData
对象时,一个包含id = 1
和列表方含1001, 1002, 1003, 1004
,以及第二UserData
对象,包含id = 2
与包含列表2001, 2002, 2003
。
我怎样才能做到这一点?我尝试使用filter()
在stream()
此的List<UsersContexts>
对象,但没有努力...
第一步是收集UsersContexts
到Map<Integer, List<Integer>>
使用Collectors.groupingBy分组通过id
。然后流式传输的地图和每个条目转换成UserData
usersContexts.stream()
.collect(Collectors.groupingBy(UsersContexts::getId,
Collectors.mapping(UsersContexts::getCxtId, Collectors.toList())))
.entrySet()
.stream()
.map(entry->new UserData(entry.getKey(), entry.getValue()))
.collect(Collectors.toList());
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句