当前位置: 首页 > 知识库问答 >
问题:

如何将Java 8流转换为数组?

李法
2023-03-14

将Java 8转换为数组的最简单/最快捷的方法是什么?

共有2个答案

郤令
2023-03-14

如果要从中获取值从1到10的整数数组,则可使用intstream

在这里,我们使用stream.of方法创建stream并使用MapToIntstream 转换为intStream。然后我们可以调用IntStreamToArray方法。

Stream<Integer> stream = Stream.of(1,2,3,4,5,6,7,8,9,10);
//or use this to create our stream 
//Stream<Integer> stream = IntStream.rangeClosed(1, 10).boxed();
int[] array =  stream.mapToInt(x -> x).toArray();

这里是相同的东西,没有,只使用intstream:

int[]array2 =  IntStream.rangeClosed(1, 10).toArray();
孙德宇
2023-03-14

最简单的方法是使用toArray(IntFunction generator) 方法和数组构造函数引用。该方法的API文档中建议了这一点。

String[] stringArray = stringStream.toArray(String[]::new);

它所做的是找到一个接受整数(大小)作为参数的方法,并返回一个String[],这正是New String[]的重载之一。

您还可以编写自己的intfunction:

Stream<String> stringStream = ...;
String[] stringArray = stringStream.toArray(size -> new String[size]);

IntFunction 生成器 的目的是将数组大小的整数转换为新数组。

示例代码:

Stream<String> stringStream = Stream.of("a", "b", "c");
String[] stringArray = stringStream.toArray(size -> new String[size]);
Arrays.stream(stringArray).forEach(System.out::println);

打印:

a
b
c
 类似资料:
  • 我正在尝试创建一个简单的解析util,它转换一个两列CSV文件并将其放入一个映射。 如您所见,我正在创建一个字符串流,用逗号分隔每一行,并将其转换为字符串数组,最后将键映射到索引0,将值映射到索引1。 出于某种原因,当我运行这个测试时,实际值为null。我排除了无效的文件路径,因为它在另一个单元测试中运行良好,并且键值出现在CSV中。我已经盯着它看了几个小时了,我想也许有人能指出我的错误。 此外,

  • 更正:正如你们所指出的,我使用的是Java7。现在,方法就在那里。但问题仍然适用: 如何从字符串中获取?

  • 我有一个复杂的要求,列表中记录有注释。我们有一个报告的功能,每个变化都应该被记录和报告。因此,根据我们的设计,即使单个字段已更新,我们也会创建一个全新的记录。 现在,我们希望将注释的历史记录(按时间戳反向排序)存储在数据库中。运行查询后,我得到了评论列表,但它包含重复的条目,因为其他一些字段被更改。它还包含空条目。 我编写了以下代码来删除重复和空条目。 这个逻辑工作正常,现在已经过测试了,但是我想

  • 我正在查看的文档,我看到了方法,但无法直接转到 是否有方法将转换为?

  • 在Java8中,如何将(在中)转换为(在中)?

  • 我刚刚补充道 对这个项目。我有<code>suspend fun foo():Flow 我需要获得