list自定义属性例如日期属性分组java
时间: 2023-07-20 09:14:22 浏览: 100
java实现分组聚合
在Java中,您可以使用Java 8中的`Stream API`来将自定义对象属性(例如日期属性)分组。假设您有一个自定义对象类`MyObject`,其中包含属性`date`,您可以按照该属性来进行分组。以下是一个示例代码:
```java
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
class MyObject {
private String name;
private LocalDate date;
public MyObject(String name, LocalDate date) {
this.name = name;
this.date = date;
}
public String getName() {
return name;
}
public LocalDate getDate() {
return date;
}
}
public class GroupingListObjects {
public static void main(String[] args) {
List<MyObject> myObjects = Arrays.asList(new MyObject("Obj1", LocalDate.of(2021, 1, 1)),
new MyObject("Obj2", LocalDate.of(2021, 1, 2)),
new MyObject("Obj3", LocalDate.of(2021, 1, 1)),
new MyObject("Obj4", LocalDate.of(2021, 1, 2)));
Map<LocalDate, List<MyObject>> groupedObjects =
myObjects.stream().collect(Collectors.groupingBy(MyObject::getDate));
System.out.println(groupedObjects);
}
}
```
这将输出一个`Map`,其中键是每个日期,值是该日期下的所有对象。在此示例中,输出将是:
```
{2021-01-01=[MyObject{name='Obj1', date=2021-01-01}, MyObject{name='Obj3', date=2021-01-01}],
2021-01-02=[MyObject{name='Obj2', date=2021-01-02}, MyObject{name='Obj4', date=2021-01-02}]}
```
其中包含两个日期,一个是2021年1月1日,包含两个对象,另一个是2021年1月2日,也包含两个对象。
阅读全文