[英]How to use the Java Filter method to filter with a dynamic parameter?
What is the correct way to filter elements of a list with declarative programming?使用声明性编程过滤列表元素的正确方法是什么? My idea is to create a new list with more specific elements.
我的想法是创建一个包含更具体元素的新列表。 For example having a new list only dates from a date specified by the user.
例如,有一个新列表仅从用户指定的日期开始。
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
public class App {
public static void main(String[] args) {
Date d1 = new Date("2020/02/15");
Date d2 = new Date("2020/03/15");
Date d3 = new Date("2020/04/15");
Date d4 = new Date("2020/05/15");
Date d5 = new Date("2020/06/15");
Date d6 = new Date("2020/07/15");
List<Date> dates1 = new ArrayList<>();
dates1.add(d1);
dates1.add(d2);
dates1.add(d3);
dates1.add(d4);
dates1.add(d5);
dates1.add(d6);
Date dateFilter = new Date("2020/05/14");
List<Date> dates2 = dates1.stream()
.filter((date -> date.compareTo(dateFilter)))
.collect(Collectors.toList());
}
}
It is a bit hard to understand your question, From what I understood below is the solution you can try:有点难以理解你的问题,根据我的理解,下面是你可以尝试的解决方案:
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class App {
public static void main(String[] args) {
//using new date libraries
LocalDate d1 = LocalDate.parse("2020-02-15");
LocalDate d2 = LocalDate.parse("2020-03-15");
LocalDate d3 = LocalDate.parse("2020-04-15");
LocalDate d4 = LocalDate.parse("2020-05-15");
LocalDate d5 = LocalDate.parse("2020-06-15");
LocalDate d6 = LocalDate.parse("2020-07-15");
List<LocalDate> dateList = new ArrayList<>();
dateList.add(d1);
dateList.add(d2);
dateList.add(d3);
dateList.add(d4);
dateList.add(d5);
dateList.add(d6);
LocalDate dateToFilter = LocalDate.parse("2020-05-15");
//You were using compareTo which will return int value filter expects Boolean
List<LocalDate> filteredDates = dateList.stream()
.filter((LocalDate -> LocalDate.isEqual(dateToFilter)))
.collect(Collectors.toList());
filteredDates.forEach(System.out::println);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.