将Java 8流
转换为数组的最简单/最快捷的方法是什么?
如果要从流
中获取值从1到10的整数数组,则可使用intstream
。
在这里,我们使用stream.of
方法创建stream
并使用MapToInt
将stream
转换为intStream
。然后我们可以调用IntStream
的ToArray
方法。
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();
最简单的方法是使用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 我需要获得