这两种流创建方法之间在性能或最佳实践方面是否存在显着差异?
int[] arr2 = {1,2,3,4,5,6};
Arrays.stream(arr2)
.map((in)->in*2)
.mapToObj((in) -> new Integer(in))
.collect(Collectors.toCollection(()-> new ArrayList<>()));
Arrays.stream(arr2)
.map(in->in*2)
.boxed()
.collect(Collectors.toCollection(()-> new ArrayList<>()));
多亏了Stack Community的回答,我可以为新读者添加一些问题的完整性补充:
许多人指出,.boxed()
IntStream方法定义为:
@Override
public final Stream<Integer> boxed() {
return mapToObj(Integer::valueOf);
}
从根本上将问题重新定义为下列哪个更好的问题:
.mapToObj(in -> new Integer(in))
要么
.mapToObj(in -> Integer.valueOf(in))
是的,可以从缓存中检索某些实例的boxed()
用法。Integer.valueOf
Integer
因此,您应该将该版本与boxed()
(最好使用)一起使用,或者使用Integer.valueOf
代替new Integer()
。请注意,boxed()
实际上这是的简写mapToObj(Integer::valueOf)
。
假设我有一张房间清单 每个房间都有一份人员名单。 使用java8 streams,我想迭代房间列表,获取所有人员,在每个节点上执行一些方法(doSomething()),并获取所有过滤对象的列表。 这是使用java 8的最佳实践吗?
我正在从文件中读取值并获取列表。如下- 一旦我得到这个
假设我有以下工作的lambda表达式: 我想在过滤器语句之前创建一个具有2个值的流。所以我想做一个映射,但仍然保留原始值。我想实现这样的事情: 这可能与Java8流?我已经看了收集(GroupingBy()),但仍然没有成功。
我有两种将实体映射到域的方法。 当我试图定义实体列表到域的映射方法时,我发现了用于映射集合元素的模糊映射方法。 有没有一种方法可以定义用于映射对象集合的方法
如果说Vimscript有一个特性使得你能够按照你的意愿定制Vim,那就非键盘映射莫属。 你可以通过键盘映射告诉Vim: 当我按下这个键时,我需要你放弃默认操作,按我的想法做。 我们先从normal模式的键盘映射开始。我们将在下一章节讨论insert模式和其他模式下的 键盘映射。 随意在文本中敲写几行文字,然后运行命令: :::vim :map - x 将光标置于文本中的某处,按下-。注意Vim
我有以下两门课: : : 我希望进行流操作,以便: 将映射到中的 的和分别合并到和中,对于所有具有相同id的s 为此,我编写了以下一段代码: 它的工作和输出如下: 但我相信有一种更好的方式可以达到同样的效果。任何一个指针都很好。