Java 集合分组:按日期将相同类型的对象归类到 Map 中
你可以按照以下步骤来实现:\n\n1. 创建一个空的 HashMap,用于存储新生成的 Map。\n2. 遍历原始集合中的每个对象。\n3. 获取每个对象的日期和类型字段。\n4. 判断新生成的 Map 中是否已经存在以该日期作为 key 的条目。\n\t- 如果不存在,则创建一个以该日期作为 key 的条目,并将当前对象作为 value。\n\t- 如果已经存在,则获取该日期对应的 value,将当前对象添加到 value 中。\n5. 继续处理下一个对象,直到遍历完所有对象。\n6. 返回新生成的 Map。\n\n下面是一个示例代码:\n\njava\nimport java.util.*;\n\npublic class Main {\n public static void main(String[] args) {\n List<MyObject> objects = new ArrayList<>();\n objects.add(new MyObject("2022-01-01", "类型A"));\n objects.add(new MyObject("2022-01-01", "类型B"));\n objects.add(new MyObject("2022-01-02", "类型A"));\n objects.add(new MyObject("2022-01-02", "类型B"));\n objects.add(new MyObject("2022-01-02", "类型C"));\n\n Map<String, List<MyObject>> map = generateMap(objects);\n\n // 打印生成的 Map\n for (Map.Entry<String, List<MyObject>> entry : map.entrySet()) {\n System.out.println("日期:" + entry.getKey());\n System.out.println("对应的对象列表:");\n for (MyObject obj : entry.getValue()) {\n System.out.println(obj);\n }\n System.out.println("--------------------");\n }\n }\n\n public static Map<String, List<MyObject>> generateMap(List<MyObject> objects) {\n Map<String, List<MyObject>> map = new HashMap<>();\n for (MyObject obj : objects) {\n String date = obj.getDate();\n List<MyObject> list = map.get(date);\n if (list == null) {\n list = new ArrayList<>();\n map.put(date, list);\n }\n list.add(obj);\n }\n return map;\n }\n}\n\nclass MyObject {\n private String date;\n private String type;\n\n public MyObject(String date, String type) {\n this.date = date;\n this.type = type;\n }\n\n public String getDate() {\n return date;\n }\n\n public String getType() {\n return type;\n }\n\n @Override\n public String toString() {\n return "日期:" + date + ",类型:" + type;\n }\n}\n\n\n运行上面的示例代码,输出结果如下:\n\n\n日期:2022-01-01\n对应的对象列表:\n日期:2022-01-01,类型:类型A\n日期:2022-01-01,类型:类型B\n--------------------\n日期:2022-01-02\n对应的对象列表:\n日期:2022-01-02,类型:类型A\n日期:2022-01-02,类型:类型B\n日期:2022-01-02,类型:类型C\n--------------------\n\n
原文地址: https://www.cveoy.top/t/topic/pF1z 著作权归作者所有。请勿转载和采集!