将字符串数组转换为整数集合?

6

如何将String[] 转换为 Collection<Integer>?以下为我目前的实现方式,但不确定是否是最佳实践:

String[] myStringNumbers;

Arrays.stream(Arrays.asList(myStringNumbers).stream().mapToInt(Integer::parseInt).toArray()).boxed().collect(
                    Collectors.toList());
3个回答

8
您不需要创建一个中间数组。只需解析和收集(使用静态导入Collectors.toList):
Arrays.stream(myStringNumbers).map(Integer::parseInt).collect(toList());

3

不必使用parseInt,因为它会将结果装箱到集合中,正如 @Misha 所述,您可以使用Arrays.stream创建流。 因此,您可以使用以下内容:

Arrays.stream(myStringNumbers).map(Integer::decode).collect(Collectors.toList());

请注意,这个方法不会进行任何错误处理(如果你不想冒险的话,数字不应该以0#0x开头)。如果你只需要十进制数,Integer::valueOf是更好的选择。

2
“int”值在任何情况下都会被装箱,因此使用“valueOf”或“parseInt”没有区别。而且建议使用不同的方法,如“decode”,然后警告由于该方法具有不同目的而导致的意外情况,这是相当奇怪的。 - Holger

0

这是我的想法:

String[] myStringNumbers = {"1", "2"};
List<Integer> list = Stream.of(myStringNumbers).map(Integer::valueOf).collect(Collectors.toList());

希望它能有所帮助。:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接