小编Val*_*len的帖子

Lambda只能用于功能界面吗?

我这样做了:

public class LambdaConflict
{
    public static void main(String args[]){
        //*
        System.out.println(LambdaConflict.get(
            (str) -> "Hello World!! By ME?"
        ));
        /*/
        System.out.println(LambdaConflict.get(new Intf<String> (){
            @Override public String get1(String str){
                return "Hello World!! By get1 " + str;
            }
        }));
        /*****/
    }

    public static String get(Intf<String> i, boolean b){
        return i.get1("from 1");
    }
}

interface Intf<T>
{
    public T get1(T arg1);

    public T get2(T arg1);
}
Run Code Online (Sandbox Code Playgroud)

并获得此异常:

不兼容的类型:Intf不是函数接口在接口Intf中找到的多个非重写抽象方法注意:某些消息已被简化; 使用-Xdiags重新编译:详细以获得完整输出1错误

是否有任何条件我不能使用lambda来替换匿名类?

java lambda java-8 functional-interface

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

尽早终止Iterable.forEach

我有一套和一个方法:

private static Set<String> set = ...;
public static String method(){
    final String returnVal[] = new String[1];
    set.forEach((String str) -> {
        returnVal[0] += str;
        //if something: goto mark
    });
    //mark
    return returnVal[0];
}
Run Code Online (Sandbox Code Playgroud)

我可以在lambda中终止forEach(使用或不使用例外)吗?我应该使用匿名课吗?

我能做到这一点:

set.forEach((String str) -> {
     if(someConditions()){
         returnVal[0] += str;
     }
});
Run Code Online (Sandbox Code Playgroud)

但是浪费时间.

使用stream.reduce实现

return set.parallelStream().reduce((output, next) -> {
    return someConditions() ? next : output;
}).get(); //should avoid empty set before
Run Code Online (Sandbox Code Playgroud)

我正在寻找最快的解决方案,因此如果它们足够快,那么每个循环的异常和"真实"是可以接受的.

java lambda iterable java-8

2
推荐指数
1
解决办法
487
查看次数

标签 统计

java ×2

java-8 ×2

lambda ×2

functional-interface ×1

iterable ×1