小编Rie*_*ien的帖子

Lambda完全没有做任何事情

我需要有一个Runnable没有做任何事情的函数接口的lambda表达式.我曾经有过一种方法

private void doNothing(){
    //Do nothing
}
Run Code Online (Sandbox Code Playgroud)

然后使用this::doNothing.但我发现了一个更短的方法来做到这一点.

java lambda runnable java-8

47
推荐指数
3
解决办法
2万
查看次数

什么更有效?一个If Else还是一个HashMap?

我正在用Java编写一些代码来检查坐标是哪个象限,我想知道检查这个方法的效率更高:if-else块或使用HashMap.

HashMap看起来像这样:

private static final Map<Coordinate,Quadrant> quadMap = new HashMap<Coordinate, Quadrant>(){{
    put(new Coordinate(0,0), Quadrant.Q1);
    put(new Coordinate(0, 1), Quadrant.Q2);
    put(new Coordinate(1, 0), Quadrant.Q3);
    put(new Coordinate(1, 1), Quadrant.Q4);
}};
Run Code Online (Sandbox Code Playgroud)

然后我想要获得我的象限:

return quadMap.get(coordinate)
Run Code Online (Sandbox Code Playgroud)

if-else实现:

if (x < 1){
        if (y < 1){
            return Quadrant.Q1;
        } else {
            return Quadrant.Q2;
        }
    } else {
        if (y < 1){
            return Quadrant.Q3;
        } else {
            return Quadrant.Q4;
        }
    }
Run Code Online (Sandbox Code Playgroud)

或者还有另一种更有效的方法吗?

java if-statement hashmap

6
推荐指数
1
解决办法
3012
查看次数

在Java中将谓词作为lambda返回

这个在线教程中,他们使用lambda来过滤用户列表:

List<User> olderUsers = users.stream().filter(u -> u.age > 30).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个接受lambda(u -> u.age > 30部分)的函数,这样我就可以在这个lambda中放入任何我想要的标准.但我有点坚持如何实现这一点.我做了一个空接口Filter,我做了以下方法:

public List<User> filterUsers(Filter f, List<User users>){
    return users.stream().filter(f).collect(Collectors.toList());
}
public Filter olderThan(int age) {
    return u -> u.getAge() > age;
}
Run Code Online (Sandbox Code Playgroud)

但这会产生许多错误.

(我做了一个age领域的吸气剂user).有没有办法调整界面Filter或其他方法使其工作?

java lambda predicate filter java-8

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

标签 统计

java ×3

java-8 ×2

lambda ×2

filter ×1

hashmap ×1

if-statement ×1

predicate ×1

runnable ×1