小编vai*_*092的帖子

仅当在Java8中使用lambda时不为null时才过滤值

我有一个对象列表说car.我想基于使用Java 8的一些参数来过滤此列表.但是如果参数是null,它会抛出NullPointerException.如何过滤掉空值?

目前的代码如下

requiredCars = cars.stream().filter(c -> c.getName().startsWith("M"));
Run Code Online (Sandbox Code Playgroud)

NullPointerException如果getName()返回则抛出null.

java null lambda nullpointerexception java-8

146
推荐指数
5
解决办法
18万
查看次数

如何在Java 8 Lambdas中使用非final变量

如何在Java 8 lambda中使用非final变量.它抛出编译错误,说'在封闭范围中定义的局部变量日期必须是最终的或有效的最终'

我其实想要实现以下目标

public Integer getTotal(Date date1, Date date2) {
    if(date2 == null || a few more conditions) {
        date2 = someOtherDate;
    }
    return someList.stream().filter(filter based on date1 and date2).map(Mapping Function).reduce(Addition);
}
Run Code Online (Sandbox Code Playgroud)

我该如何实现这一目标?它会引发date2的编译错误.谢谢,

java lambda final java-8

13
推荐指数
2
解决办法
6669
查看次数

如何使用Java 8 Lambdas将对象列表转换为Map <Object,Object>

我有对象列表说需要转换为地图的汽车.

    Public Class Car {
        private Integer carId;
        private Integer companyId;
        private Boolean isConvertible;
        private String carName;
        private String color;
        private BigDecimal wheelBase;
        private BigDecimal clearance;
    }
Run Code Online (Sandbox Code Playgroud)

我有另一个对象,我想把它当作Map的关键.

    public class Key<L, C, R> {
        private L left;
        private C center;
        private R right; 
   }
Run Code Online (Sandbox Code Playgroud)

我想从List of Car对象创建一个地图.

List<Car> cars;
Map<Key, Car> -> This map contains Key object created from 3 field of Car object namely carId, companyId, isConvertible.
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何使用Java 8 Lambda执行此操作

cars.stream.collect(Collectors.toMap(?, (c) -> c);
Run Code Online (Sandbox Code Playgroud)

在上面的语句中,代替?,我想使用当前car对象中存在的值创建Key类的对象.我怎样才能做到这一点?

java lambda dictionary list java-8

9
推荐指数
1
解决办法
2590
查看次数

在Mybatis中的另一个结果Map中选择整数列表作为集合

我想在Mybatis的Result Map中选择Collection of Integers作为Collection.我无法找到解决这个问题的方法.

结果类是

class Mapping {
private String name;
private List<Integer> ids;
}
Run Code Online (Sandbox Code Playgroud)

Mybatis如下:

<resultMap id="mapping" type="some.package.Mapping">
        <result property="name" column="name"/>
        <collection property="ids" column="id" javaType="java.util.List" ofType="java.lang.Integer" />
</resultMap>

<select id="getMapping" resultMap="mapping">
        SELECT name, id
        FROM mapping
    </select>
Run Code Online (Sandbox Code Playgroud)

这段代码不适合我.我错过了什么?

collections mybatis

5
推荐指数
2
解决办法
3952
查看次数

使用Lambda在Java中的对象列表中填充属性

我有一个对象列表,我想为列表中的每个对象填充一个属性.我可以像这样使用for循环.

for(Car car : cars) {
    String abcd = getSomeValue();
    car.setAbcd(abcd);
}
Run Code Online (Sandbox Code Playgroud)

我可以在Java8中使用Lambda做同样的事情.

java lambda list java-8

4
推荐指数
1
解决办法
726
查看次数