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