java中list集合筛选出本月数据
🎈边走、边悟🎈迟早会好 |
在Java中筛选出本月的数据,你可以使用java.time
包中的类来处理日期和时间。假设你有一个包含日期字段的List
对象集合,你可以利用Stream
API来筛选出本月的数据。
下面是一个示例代码,展示如何筛选出本月的数据:
import java.time.LocalDate;
import java.time.YearMonth;
import java.util.*;
import java.util.stream.Collectors;
class Item {
LocalDate date;
double value;
public Item(LocalDate date, double value) {
this.date = date;
this.value = value;
}
public LocalDate getDate() {
return date;
}
public double getValue() {
return value;
}
@Override
public String toString() {
return "Item{" + "date=" + date + ", value=" + value + '}';
}
}
public class Main {
public static void main(String[] args) {
List<Item> data = Arrays.asList(
new Item(LocalDate.of(2024, 7, 1), 100.0),
new Item(LocalDate.of(2024, 7, 15), 200.0),
new Item(LocalDate.of(2024, 6, 20), 300.0),
new Item(LocalDate.of(2024, 7, 30), 400.0),
new Item(LocalDate.of(2024, 8, 5), 500.0)
);
List<Item> filteredData = filterByCurrentMonth(data);
filteredData.forEach(System.out::println);
}
//筛选方法
public static List<Item> filterByCurrentMonth(List<Item> items) {
YearMonth currentMonth = YearMonth.now(); // 获取当前月份
return items.stream()
.filter(item -> {
YearMonth itemMonth = YearMonth.from(item.getDate());
return itemMonth.equals(currentMonth);
})
.collect(Collectors.toList());
}
}
代码说明
-
定义
Item
类:- 包含字段
date
(LocalDate
类型)和value
(double
类型),以及相应的构造函数和toString
方法。
- 包含字段
-
在
main
方法中:- 创建一个包含多个
Item
对象的列表data
,每个对象都包含一个日期和一个值。 - 调用
filterByCurrentMonth
方法进行筛选。 - 打印筛选后的结果。
- 创建一个包含多个
-
定义
filterByCurrentMonth
方法:- 获取当前月份:
YearMonth.currentMonth()
. - 使用
stream
API进行处理:items.stream()
:将列表转换为流。filter(item -> { ... })
:筛选出日期字段的月份与当前月份相同的元素。YearMonth.from(item.getDate())
:获取item
日期的月份。itemMonth.equals(currentMonth)
:检查月份是否相同。
collect(Collectors.toList())
:将筛选后的结果收集到一个新的列表中并返回。
- 获取当前月份:
运行结果
运行上述代码后,输出将包含所有日期在本月的Item
对象。例如,如果你在2024年7月运行此代码,输出将是:
Item{date=2024-07-01, value=100.0}
Item{date=2024-07-15, value=200.0}
Item{date=2024-07-30, value=400.0}
🌟感谢支持 听忆.-CSDN博客
🎈众口难调🎈从心就好 |