java将逗号分隔的字符串转换为不带中间容器的列表
我需要将逗号分隔的字符串转换为整数列表。例如,如果我有以下字符串
String numbersArray = "1, 2, 3, 5, 7, 9,";
有没有办法把它一次转换成List<Integer>
现在我只看到一种方法
List<String> numbers = Arrays.asList(numbersArray.split(","));
然后
List<Integer> numbersInt = new ArrayList<>();
for (String number : numbers) {
numbersInt.add(Integer.valueOf(nubmer));
}
我很好奇,有没有一种方法可以让List<String>
错过部分,并在第一次开始时将其转换为List<Integer>
# 1 楼答案
只要
String
以逗号结尾,就像你的例子一样,这就行了然而,这是非常无用的,因为在我的机器上,它的速度大约是原来的2倍
另一方面,下一个解决方案速度惊人。我在使用
Math.abs(random.nextInt())
获得的50000个整数列表上测试了它,速度大约是原来的4倍这个速度是原来的两倍:
# 2 楼答案
我真的很喜欢@marounnaroun的答案,但我想知道使用
Arrays.stream
-方法而不是Arrays.asList
是否更好This SO-question进一步讨论并总结如下:
# 3 楼答案
如果你愿意使用谷歌番石榴(https://code.google.com/p/guava-libraries/),splitter是你的朋友
或者,你可以使用与你最初的方法类似的方法:
# 4 楼答案
如果您不在java8上,那么可以使用Guava
正如@Maroun在Java8中提到的,您可以使用流
# 5 楼答案
如果您使用的是Java 8,您可以:
如果不是,我认为你的方法是最好的选择
# 6 楼答案
使用java 8流: