2016-04-15 58 views
6

什么是将String[]转换为Collection<Integer>的简单方法?这是我现在正在做的事情,但不知道它是否好:字符串数组到整数的集合?

String[] myStringNumbers; 

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

回答

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开始)。如果你只需要10个数字,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()); 

我希望它可以提供一些帮助。 :)