以下是一个示例代码,用于按字段将领域对象分组:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DomainObjectGrouping {
public static void main(String[] args) {
// 创建领域对象列表
List domainObjects = new ArrayList<>();
domainObjects.add(new DomainObject("A", 1));
domainObjects.add(new DomainObject("B", 2));
domainObjects.add(new DomainObject("A", 3));
domainObjects.add(new DomainObject("C", 4));
domainObjects.add(new DomainObject("B", 5));
// 调用分组方法
Map> groupedObjects = groupByField(domainObjects);
// 打印分组结果
for (String key : groupedObjects.keySet()) {
System.out.println("Field: " + key);
List objects = groupedObjects.get(key);
for (DomainObject object : objects) {
System.out.println(object.getName() + ", " + object.getValue());
}
System.out.println();
}
}
public static Map> groupByField(List domainObjects) {
Map> groupedObjects = new HashMap<>();
for (DomainObject object : domainObjects) {
String field = object.getName();
// 如果分组中已经有该字段,将对象添加到对应列表中;否则,创建新的列表并添加到分组中
if (groupedObjects.containsKey(field)) {
List objects = groupedObjects.get(field);
objects.add(object);
} else {
List objects = new ArrayList<>();
objects.add(object);
groupedObjects.put(field, objects);
}
}
return groupedObjects;
}
}
class DomainObject {
private String name;
private int value;
public DomainObject(String name, int value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public int getValue() {
return value;
}
}
在上述示例代码中,我们创建了一个DomainObject
类来表示领域对象,该对象有一个name
字段和一个value
字段。然后,我们创建了一个groupByField
方法,该方法接受一个List
参数,并按照name
字段将领域对象分组。
在groupByField
方法中,我们使用HashMap
来存储分组结果,其中key
是字段的值,value
是具有相同字段值的领域对象列表。我们遍历领域对象列表,对于每个对象,获取其name
字段值作为分组的依据。然后,我们检查分组中是否已经存在该字段值,如果存在,则将对象添加到对应的列表中;否则,创建一个新的列表,并将其添加到分组中。
最后,我们在main
方法中创建了一些领域对象,并调用groupByField
方法将其分组。然后,我们打印出分组结果,以便查看每个分组的对象列表。
上一篇:按其子代ID筛选父项
下一篇:按其子对象对对象进行排序