我有一个列表myListToParse,我想过滤元素并在每个元素上应用一个方法,并将结果添加到另一个列表中myFinalList.
使用Java 8,我注意到我可以通过两种不同的方式完成它.我想知道他们之间更有效的方式,并理解为什么一种方式比另一种更好.
我对任何有关第三种方式的建议持开放态度.
方法1:
myFinalList = new ArrayList<>();
myListToParse.stream()
.filter(elt -> elt != null)
.forEach(elt -> myFinalList.add(doSomething(elt)));
Run Code Online (Sandbox Code Playgroud)
方法2:
myFinalList = myListToParse.stream()
.filter(elt -> elt != null)
.map(elt -> doSomething(elt))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个包含n个元素的对象列表.我试图以尽可能多的java 8方式做到这一点.类似于c#的问题: 创建N个对象并将它们添加到列表中
像这样的东西:
List <Objects> getList(int numOfElements)
{
}
Run Code Online (Sandbox Code Playgroud) 我知道Java 8 Stream提供.collect了将Stream转换为我们选择的任何集合/数据结构的方法,它本质上是非常通用的.了解Stream可能源自非收集对象/资源.但从使用角度来看,将Stream转换为List/Set是很自然的.
流已经提供了toArray()方法转换为数组,那么为什么不toList()和toSet()?
我想过滤CC数组的地址,并希望将它收集到同一个数组,
例如
String[] ccAddress = emails.split(";");
ccAddress = Arrays.stream(ccAddress)
.filter(adr -> "".equals(adr) == false)
.collect(Collectors.toArray);// ?????
Run Code Online (Sandbox Code Playgroud)
我的问题是,"在Java8中有没有直接的方法来收集过滤后的元素"?
注意:我知道我可以简单地将它们收集到List并写入list.toArray()以获取数组,但这不是我的问题.