java list转化为map如何提取某个字段为key?

list =[ {"id": 2, "name": "san"}, {"id": 3, "name": "si"}]

我想转为:
map = "2": {"id": 2, "name": "san"}, "3":{"id": 3, "name": "si"}
阅读 3k
2 个回答
import java.util.*;
import java.util.stream.*;

public class Main {
    public static void main(String[] args) {
        List<Map<String, Object>> list = new ArrayList<>();
        Map<String, Object> item1 = new HashMap<>();
        item1.put("id", 2);
        item1.put("name", "san");
        list.add(item1);

        Map<String, Object> item2 = new HashMap<>();
        item2.put("id", 3);
        item2.put("name", "si");
        list.add(item2);

        Map<Integer, Map<String, Object>> map = list.stream()
            .collect(Collectors.toMap(
                item -> (Integer) item.get("id"),
                item -> item
            ));

        System.out.println(map);
    }
}

和楼上不同的一个非stream的版本:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        List<Map<String, Object>> list = getList();
        Map<String, Map<String, Object>> map = new HashMap<>();

        for (Map<String, Object> element : list) {
            String id = element.get("id").toString();
            map.put(id, element);
        }

        System.out.println(map);
    }

    private static List<Map<String, Object>> getList() {
        // 假设这是你的列表
        List<Map<String, Object>> list = new ArrayList<>();
        Map<String, Object> element1 = new HashMap<>();
        element1.put("id", 2);
        element1.put("name", "san");
        list.add(element1);

        Map<String, Object> element2 = new HashMap<>();
        element2.put("id", 3);
        element2.put("name", "si");
        list.add(element2);

        return list;
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题