在Java中,可以使用Stream API和Lambda表达式来按月和年过滤对象数组。下面是一个示例代码:
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class ObjectArrayFilter {
public static void main(String[] args) {
// 创建对象数组
List<MyObject> objects = new ArrayList<>();
objects.add(new MyObject("Object 1", LocalDate.of(2022, 1, 15)));
objects.add(new MyObject("Object 2", LocalDate.of(2022, 2, 20)));
objects.add(new MyObject("Object 3", LocalDate.of(2022, 3, 25)));
objects.add(new MyObject("Object 4", LocalDate.of(2022, 4, 30)));
// 按月过滤对象数组
int targetMonth = 2;
List<MyObject> filteredByMonth = objects.stream()
.filter(obj -> obj.getDate().getMonthValue() == targetMonth)
.collect(Collectors.toList());
System.out.println("按月过滤结果:");
for (MyObject obj : filteredByMonth) {
System.out.println(obj.getName());
}
// 按年过滤对象数组
int targetYear = 2022;
List<MyObject> filteredByYear = objects.stream()
.filter(obj -> obj.getDate().getYear() == targetYear)
.collect(Collectors.toList());
System.out.println("按年过滤结果:");
for (MyObject obj : filteredByYear) {
System.out.println(obj.getName());
}
}
static 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;
}
}
}
上述代码中,我们创建了一个名为MyObject
的简单对象类,包含了名称和日期两个属性。然后,我们创建了一个对象数组objects
,其中包含了四个示例对象。
接下来,我们使用Stream API和Lambda表达式来按月和年过滤对象数组。首先,我们定义了目标月份targetMonth
和目标年份targetYear
。然后,我们使用filter
方法来过滤对象数组,只保留满足条件的对象。最后,我们使用collect
方法将过滤后的对象收集到新的列表中。
在示例代码中,我们分别按照2月和2022年来过滤对象数组,并将结果打印输出。
请注意,这只是一个简单的示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。
领取专属 10元无门槛券
手把手带您无忧上云