Java list根据日期分组,日期可重复
时间: 2023-08-16 10:07:40 浏览: 105
java 中List按照date排序的实现
可以使用Java 8中的Stream API和Collectors.groupingBy()方法实现根据日期分组的功能。代码示例如下:
假设有一个包含日期的List<Date>,可以按照以下方式进行分组:
```java
List<Date> dates = // 获取日期列表
Map<Date, List<Date>> dateMap = dates.stream().collect(Collectors.groupingBy(date -> date));
```
此时,得到的dateMap就是按照日期分组后的结果,其中每个键值对的键为日期,值为该日期下的所有元素组成的List。如果日期可以重复,那么同一日期下的元素就会被放在一起。
需要注意的是,由于Date类的equals方法并不是根据日期值比较,而是根据对象引用比较,因此可能需要先将Date转换为LocalDate来进行分组。代码示例如下:
```java
List<Date> dates = // 获取日期列表
Map<LocalDate, List<Date>> dateMap = dates.stream()
.collect(Collectors.groupingBy(date -> date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()));
```
这样得到的dateMap就是按照日期分组后的结果,其中每个键值对的键为LocalDate,值为该日期下的所有元素组成的List。
阅读全文