在我的项目中,我使用Guava谓词和函数来使用collections2.transform
和collections2.filter
筛选和转换一些集合。
在这次迁移中,我需要将guava代码更改为Java8更改。所以,我所做的改变是这样的:
List<Integer> naturals = Lists.newArrayList(1,2,3,4,5,6,7,8,9,10,11,12,13);
Function <Integer, Integer> duplicate = new Function<Integer, Integer>(){
@Override
public Integer apply(Integer n)
{
return n * 2;
}
};
Collection result = Collections2.transform(naturals, duplicate);
到...
List<Integer> result2 = naturals.stream()
.map(n -> n * 2)
.collect(Collectors.toList());
@Hidden
@DontInline
/** Interpretively invoke this form on the given arguments. */
Object interpretWithArguments(Object... argumentValues) throws Throwable {
if (TRACE_INTERPRETER)
return interpretWithArgumentsTracing(argumentValues);
checkInvocationCounter();
assert(arityCheck(argumentValues));
Object[] values = Arrays.copyOf(argumentValues, names.length);
for (int i = argumentValues.length; i < values.length; i++) {
values[i] = interpretName(names[i], values);
}
return (result < 0) ? null : values[result];
}
.map(
n -> {
Integer nr = n * 2;
return nr;
}
)
由于stuart marks
,使用方法引用的方法还允许我调试转换过程:
static int timesTwo(int n) {
Integer result = n * 2;
return result;
}
...
List<Integer> result2 = naturals.stream()
.map(Java8Test::timesTwo)
.collect(Collectors.toList());
...
多亏了Marlon Bernardes
answer,我注意到我的Eclipse没有显示它应该显示的内容,而peek()的使用有助于显示结果。
我在使用Eclipse或IntelliJ idea时调试lambda表达式通常没有问题。只需设置一个断点,并确保不检查整个lambda表达式(只检查lambda主体)。
另一种方法是使用peek
检查流的元素:
List<Integer> naturals = Arrays.asList(1,2,3,4,5,6,7,8,9,10,11,12,13);
naturals.stream()
.map(n -> n * 2)
.peek(System.out::println)
.collect(Collectors.toList());
更新:
在我们的项目中,我们将迁移到Java8,并测试它的新特性。 在我的项目中,我使用Guava谓词和函数,使用和过滤和转换一些集合。 在这次迁移中,我需要更改例如guava代码到Java8的更改。所以,我正在做的改变是: 到... 使用guava调试代码非常符合要求,因为我可以调试每个转换过程,但我关心的是如何调试,例如。 由于,使用方法引用的方法还允许我调试转换过程: 由于回答,我注意到我的Ecli
本文向大家介绍Java中如何调试Lambda表达式,包括了Java中如何调试Lambda表达式的使用技巧和注意事项,需要的朋友参考一下 Lambda表达式由两部分组成,一个是参数,另一个是代码或表达式。 这两个部分由箭头运算符“->”分隔。 我们可以使用NetBeans,IntelliJ和Eclipse等不同的IDE来调试Java中的lambda表达式。 始终可以创建多行lambda表达式,并使用
本文向大家介绍Java8中Lambda表达式使用和Stream API详解,包括了Java8中Lambda表达式使用和Stream API详解的使用技巧和注意事项,需要的朋友参考一下 前言 Java8 的新特性:Lambda表达式、强大的 Stream API、全新时间日期 API、ConcurrentHashMap、MetaSpace。总得来说,Java8 的新特性使 Java 的运行速度更快、
(译注:目前支持lambda的gcc编译器版本为4.5,其它详细的编译器对于C++11新特性的支持请参考http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport) Lambda表达式是一种描述函数对象的机制,它的主要应用是描述某些具有简单行为的函数(译注:Lambda表达式也可以称为匿名函数,具有复杂行为的函数可以采用命名函数对象,当然,何谓复杂
Lambda表达式在Java 8中引入,并被吹捧为Java 8的最大特性.Lambda表达式有助于函数式编程,并简化了很多开发。 语法 (Syntax) lambda表达式的特征在于以下语法。 parameter -> expression body 以下是lambda表达式的重要特征。 Optional type declaration - 无需声明参数类型。 编译器可以从参数的值推断出相同的
我使用的是javax.validation.constraints。模式注释以验证来自屏幕的数据是否符合我的要求? 我的代码如下: 数据应按照以下样本数据进行验证。 正确的测试用例(以下是可接受的值): 测试 但是使用的正则表达式不接受以下数据。 132456 我用错正则表达式了吗?