相关疑难解决方法(0)

Java 8 - 转换列表的最佳方法:map或foreach?

我有一个列表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)

java java-8 java-stream

174
推荐指数
4
解决办法
14万
查看次数

如何创建包含N个对象的列表?

我正在尝试创建一个包含n个元素的对象列表.我试图以尽可能多的java 8方式做到这一点.类似于c#的问题: 创建N个对象并将它们添加到列表中

像这样的东西:

List <Objects> getList(int numOfElements)
{

}
Run Code Online (Sandbox Code Playgroud)

java collections list java-8

11
推荐指数
3
解决办法
6905
查看次数

为什么toList()不直接存在于Java 8 Stream上

我知道Java 8 Stream提供.collect了将Stream转换为我们选择的任何集合/数据结构的方法,它本质上是非常通用的.了解Stream可能源自非收集对象/资源.但从使用角度来看,将Stream转换为List/Set是很自然的.

流已经提供了toArray()方法转换为数组,那么为什么不toList()toSet()

java java-8 java-stream

4
推荐指数
1
解决办法
968
查看次数

收集数组中的对象

我想过滤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()以获取数组,但这不是我的问题.

java java-8

3
推荐指数
1
解决办法
113
查看次数

标签 统计

java ×4

java-8 ×4

java-stream ×2

collections ×1

list ×1