Java 8 在Java8中过滤空对象

Java 8 在Java8中过滤空对象,java-8,Java 8,我有一个请求对象列表,其中很少有可接受且可使用的空字段,很少有对象不能为空且应标记 在下面的示例代码中,如果Id为null,则应打印它,并且不应继续处理该请求对象,如果date为null,则可以接受。如何在Java8中对其进行过滤 class Request { private String id; private String name; private Date createDate; public void setId(String id) { this.id = id; }

我有一个请求对象列表,其中很少有可接受且可使用的空字段,很少有对象不能为空且应标记

在下面的示例代码中,如果Id为null,则应打印它,并且不应继续处理该请求对象,如果date为null,则可以接受。如何在Java8中对其进行过滤

class Request {

private String id;
private String name;
private Date createDate;

public void setId(String id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Date getCreateDate() {
    return createDate;
}

public void setCreateDate(Date createDate) {
    this.createDate = createDate;
}
}
代码段2:

List<Request> list = new ArrayList<Request>();
Request req1 = new Request();
Request req2 = new Request();
req1.setId(null); //null not allowed in Id
req1.setName("test1");
req1.setCreateDate(new Date());
req2.setId("2");
req2.setName("test2");
req2.setCreateDate(null); //null allowed in date
list.add(req1);
list.add(req2);

首先,您的请求类需要ID的getter:

public void getId() {
    return id;
}
现在,您可以按id属性进行筛选:

list.stream().filter(r -> r.getId() != null).collect(Collectors.toList());

//您必须为id添加getter方法。然后您可以使用下面的行打印id不为null的对象

list.stream.filterc->c.getId!=null.forEachc->System.out.println id->+c.getName+name->+c.getName+createDate->+c.getCreateDate


有关更多详细信息,请查看

过滤和标记是什么意思?对于不应接受null的字段,您可以在set方法中添加一个null检查。顺便说一句,像now这样麻烦的旧日期时间类已被这些类取代。看见查看即时课程。您需要新列表吗?如果您的源是一个可变列表,如ArrayList,您可以删除它们并通知它们,如iflist.removiefr->r.getId==null System.out.println有一些ID为null的请求已被删除@巴兹尔·波尔斯克谢谢。我会查一查out@Holger我根本无法删除和忽略它们。我将不得不对空请求执行更多操作。我继续回答这个问题!谢谢,谢谢你抽出时间。