List<Map>转Map<String,List>

1、问题

我现在拿到的数据是下图形式,那我现在需要以cubicleId为主键,重新组list

处理后的数据,这是我想要的数据

2、解决

Map newMap = grouping(listParams,"cubicleId");
 private static Map<String, Object> grouping(List<Map> list, String key) {
        // 使用TreeMap存放元素并排序
        Map<String, Object> newMap = new TreeMap<>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o2.compareTo(o1);
            }
        });
        list.stream().forEach(m -> {
            List<Object> l = new ArrayList<>();
            l.add(m);
            newMap.replace(m.get(key).toString(), l);
            if (m.containsKey(key)) {
                if (newMap.containsKey(m.get("cubicleId").toString())){
                    l.add(m);
                    newMap.replace(m.get(key).toString(), l);
                }else {
                    l.clear();
                    l.add(m);
                    newMap.put(m.get(key).toString(), l);
                }
        }});
        return newMap;
    }

3、补充

List<Map>根据Map的某个字段去重

listParams = listParams.stream().collect(Collectors.collectingAndThen(
                    Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(p -> p.get("cubicleId").toString()))),
                    ArrayList::new));

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java中,将字符串换为List<Map>的方法有多种。一种常见的方法是使用JSON解析库,如Jackson或Gson,来将字符串换为Java对象。这些库具有将JSON字符串换为具体类型的功能。 首先,您需要将字符串解析为JSON对象。然后,您可以使用类型引用来指定要换的目标类型,即List<Map<String, Object>>>。以下是一个示例代码: ```java // 导入相关的类 import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; // 创建一个ObjectMapper对象 ObjectMapper objectMapper = new ObjectMapper(); // 将字符串解析为List<Map<String, Object>>类型的对象 List<Map<String, Object>> list = objectMapper.readValue(string, new TypeReference<List<Map<String, Object>>>(){}); ``` 在上面的代码中,`string`是要换的字符串。`objectMapper.readValue()`方法将字符串解析为List<Map<String, Object>>类型的对象。 另一种常见的方法是使用org.json库将字符串换为JSONArray,并使用循环遍历来将JSON对象换为Map对象。以下是一个示例代码: ```java // 导入相关的类 import org.json.JSONArray; import org.json.JSONObject; // 将字符串解析为JSONArray JSONArray jsonArray = new JSONArray(string); // 创建一个List<Map<String, Object>>对象 List<Map<String, Object>> list = new ArrayList<>(); // 遍历JSONArray,并将每个JSON对象换为Map对象 for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); Map<String, Object> map = new HashMap<>(); Iterator<String> keys = jsonObject.keys(); while (keys.hasNext()) { String key = keys.next(); Object value = jsonObject.get(key); map.put(key, value); } list.add(map); } ``` 在上面的代码中,`string`是要换的字符串。首先,我们将字符串解析为JSONArray对象。然后,我们创建一个List<Map<String, Object>>对象,并遍历JSONArray来将每个JSON对象换为Map对象,并将其添加到List中。 这些是将字符串换为List<Map>的两种常见方法。您可以根据您的实际需求选择适合您的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值