比如:返回的数据格式是[{"id":"1", "name":"lisi","age":18,......},{"id":"2", "name":"wanger","age":18,......},{"id":"3", "name":"zhangsan","age":23,......},{"id":"1", "name":"liuqie","age":12,......},{"id":"2", "name":"ningba","age":19,......}]就是将id一样的放在一起,返回的格式是[{{"id":"1", "name":"lisi","age":18,......},{"id":"1", "name":"liuqie","age":12,......}},{{"id":"2", "name":"wanger","age":18,......},{"id":"2", "name":"ningba","age":19,......}},{"id":"3", "name":"zhangsan","age":23,......}]我试过用stream流写过,他返回的map集合不行,不适合,他分组出来会带key以及将id一样的变成list集合格式,求大神指教
最后的格式是
[
{
"groupname": "值1",
“time”:0.5,
"item": [
{"id": "1", "groupname": "值1", "value": "11"},
{ "id": "2", "groupname": "值1", "value": "22"}
]
},
{
"groupname": "值2",
"time":0.8,
"item": [
{"id": "3", "groupname": "值2", "value": "33"},
{ "id": "4", "groupname": "值2", "value": "44"}
]
},
{
"groupname": "值3",
"time":1.5,
"item": [
{"id": "5", "groupname": "值3", "value": "55"},
{ "id": "6", "groupname": "值3", "value": "66"}
]
}
]
[{"name":"0name","id":"0"},{"name":"1name","id":"1"},{"name":"2name","id":"2"},{"name":"0namegg","id":"0"},{"name":"1namegg","id":"1"}]
[[{"name":"0name","id":"0"},{"name":"0namegg","id":"0"}],[{"name":"1name","id":"1"},{"name":"1namegg","id":"1"}],[{"name":"2name","id":"2"}]]
这样的格式吗?
你这种json格式不存在的
System.out.println(JSON.toJSON(list)); Map<String, List<User>> collect = list.stream().collect(Collectors.groupingBy(e -> e.getId())); System.out.println(JSON.toJSON(collect.values()));
前端要的就是这个格式stream流写的这个返回Map我写过,不适用
[
{
"groupname": "值1",
"item": [
{"id": "1", "groupname": "值1", "value": "11"},
{ "id": "2", "groupname": "值1", "value": "22"}
]
},
{
"groupname": "值2",
"item": [
{"id": "3", "groupname": "值2", "value": "33"},
{ "id": "4", "groupname": "值2", "value": "44"}
]
},
{
"groupname": "值3",
"item": [
{"id": "5", "groupname": "值3", "value": "55"},
{ "id": "6", "groupname": "值3", "value": "66"}
]
}
]
就是最后要这种
用 stream 的 groupBy
你之前题目给的json格式不对,现在这种格式用groupBy就可以了
Map<String, List<User>> cardRelationMap = userList.stream() .collect(Collectors.groupingBy(User::getGroupName));
然后把这个map 根据key 和value 转换成一个list对象
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
List<UserVo> voList = new ArrayList<>();
userList.add(new User(1,"a"));
userList.add(new User(2,"a"));
userList.add(new User(3,"b"));
Map<String, List<User>> map = userList.stream().collect(Collectors.groupingBy(User::getName));
map.forEach((k,v)->voList.add(new UserVo(k,v)));
System.out.println(JSON.toJSONString(voList));
}
@AllArgsConstructor
@Data
static class User{
Integer id;
String name;
}
@AllArgsConstructor
@Data
static class UserVo{
String name;
List<User> items;
}
没问题啊,格式是正确的
直接给list.sort()排个序就完事了。