关于java里面的list数据如何分组?

//list包装的实体类
List<User> userList = new ArrayList<>();
User user = new User();
user.setName("张三");
user.setHeight("168");
user.setSex("男");
userList.add(user);
userList.add(user);
user.setName("小张");
user.setHeight("169");
user.setSex("女");
userList.add(user);
userList.add(user);

//list包装的实体类按照性别分组
Map<String, List<User>> listMap = userList.stream().collect(Collectors.groupingBy(user1 -> user.getSex()));

//list包装的实体类按照性别加姓名分组分组
Map<String, List<User>> listMap2 = userList.stream().collect(Collectors.groupingBy(user1 -> user.getSex() + user1.getName()));

//list包装的map
List<Map<String, Object>> userMaps = new ArrayList<>();
Map<String, Object> map = new HashMap<>();
map.put("name", "张三");
map.put("height", "168");
map.put("sex", "男");
userMaps.add(map);
userMaps.add(map);
map.put("name", "小张");
map.put("height", "169");
map.put("sex", "女");
userMaps.add(map);
userMaps.add(map);

//list包装的map按照性别分组
Map<String, List<Map<String,Object>>> listMap3 = userMaps.stream().collect(Collectors.groupingBy((Map map1) -> (String) map.get("sex")));

//list包装的实体类按照性别加姓名分组分组
Map<String, List<Map<String, Object>>> listMap4 = userMaps.stream().collect(Collectors.groupingBy(
        (Map map1) -> (String) map.get("sex") + (String) map.get("name")));

//JSONArray
JSONArray jsonArray = new JSONArray();
JSONObject json = new JSONObject();
json.put("name", "张三");
json.put("height", "168");
json.put("sex", "男");
jsonArray.add(json);
jsonArray.add(json);
json.put("name", "小张");
json.put("height", "169");
json.put("sex", "女");
jsonArray.add(json);
jsonArray.add(json);

//JSONArray包装的JSONObject按照性别分组
Map<String,List<JSONObject>> listMap5 = jsonArray.stream().collect(Collectors.groupingBy(jsonObject ->
        ((JSONObject)jsonObject).getSring("name"), Collectors.mapping(jsonObject -> (JSONObject)jsonObject, Collectors.toList())));

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值