缩短嵌套的 lambda

nim*_*o23 0 java collections list java-8 java-stream

我想将任务列表映射到List<Callable<Tasks>>

List<Callable<Tasks>> callableTasks = tasks.stream().map(t ->
        {
            // how to return callable directly and omitting curly braces?
            Callable<Task> task = () -> run(t);
            return task;
        }).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

如何缩短上述表达式以直接返回可调用对象?

And*_*cus 5

您可以使用Executors 类中的静态方法,例如Executors.callable

tasks.stream().map(t -> callable(() -> run(t))).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

  • 很好的解决方案!我用“tasks.stream().map(t-&gt;()-&gt;run(t);).collect(Collectors.toList())”做得更短,但在这种情况下语法有点奇怪。所以我使用你的解决方案。谢谢! (2认同)