小编Zhe*_*yaM的帖子

使用Java 8获取列表的最后一个非null元素

在Java 7中,如果我想获取列表的最后一个非null元素,我写这样的东西:

public CustomObject getLastObject(List<CustomObject> list) {
    for (int index = list.size() - 1; index > 0; index--) {
        if (list.get(index) != null) {
            return list.get(index);
        }
    }
    // handling of case when all elements are null
    // or list is empty
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想通过使用lambdas或Java 8的另一个特性来编写更短的代码.例如,如果我想获得第一个非null元素,我可以这样写:

public void someMethod(List<CustomObject> list) {
    .....
    CustomObject object = getFirstObject(list).orElseGet(/*handle this case*/);
    .....
}

public Optional<CustomObject> getFirstObject(List<CustomObject> list) {
    return list.stream().filter(object -> object != null).findFirst();
}
Run Code Online (Sandbox Code Playgroud)

也许有人知道如何解决这个问题?

java lambda java-8 java-stream

7
推荐指数
1
解决办法
4937
查看次数

通过JPA在一个Java对象中联接两个表

我需要在一定条件下将2个表连接到一个对象中。我有以下几点:

@Entity
@Table(name = "polling")
public class Polling extends DomainIdObject {

    @ManyToOne
    @JoinColumn(name = "owner_id")
    private Person owner;

    @Column(name = "poll_name")
    private String name;

    @Column(name = "description")
    private String description;

    @ManyToMany(targetEntity = PollingSchedule.class, mappedBy = "polling", fetch = FetchType.EAGER)
    private List<PollingSchedule> variants;

    @Column(name = "start_time")
    private LocalDateTime startTime;

    @Column(name = "end_time")
    private LocalDateTime endTime;

    //getters and setters

@Entity
@Table(name = "polling_schedule")
public class PollingSchedule extends DomainIdObject {

    @JoinColumn(name = "polling_id")
    private Polling polling;

    @Column(name = "poll_var")
    private String pollingVariant;

    //gettters …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa

3
推荐指数
1
解决办法
8418
查看次数

标签 统计

java ×2

hibernate ×1

java-8 ×1

java-stream ×1

jpa ×1

lambda ×1

spring ×1