String numbers = "1,2,3,4,5,6,7";
List<Long> list = new ArrayList<Long>();
for (String s : numbers.split(","))
list.add(Long.parseLong(s));
System.out.println(list);
从Java 8开始,您可以将其重写为
List<Long> list = Stream.of(numbers.split(","))
.map(Long::parseLong)
.collect(Collectors.toList());
如果您想获得List<String>,请使用稍短的版本
List<String> fixedSizeList = Arrays.asList(numbers.split(","));
List<String> resizableList = new ArrayList<>(fixedSizeList);
或一行程序
List<String> list = new ArrayList<>(Arrays.asList(numbers.split(",")));
String numbers = "1,2,3,4,5,6,7";
List<Long> list = new ArrayList<Long>();
for (String s : numbers.split(","))
list.add(Long.valueOf(s));
System.out.println(list);
7条答案
按热度按时间tnkciper1#
你是说像这样的东西?
从Java 8开始,您可以将其重写为
如果您想获得
List<String>
,请使用稍短的版本或一行程序
奖金信息:
如果您的数据可能是
String data = "1, 2 , 3,4";
,其中逗号被一些空格包围,则split(",")
将生成["1", " 2 ", " 3", "4"]
这样的结果数组。如您所见,数组中第二个和第三个元素包含这些额外空格:
" 2 "
、" 3"
,这将导致Long.parseLong
抛出NumberFormatException
(因为空格不是正确的数值)。这里的解决方案是:
Long.parseLong(s.trim())
一样进行解析之前,对这些单独的元素使用String#trim
,
上多余的空格。为此,我们可以使用split("\\s*,\\s*")
,其中\s
(在字符串中写成"\\s"
)表示空白*
是表示 * 零或更多 * 的量词,因此"\\s*"
表示零或更多空格(换句话说,使其可选)inkz8wg92#
使用java-8的简单方便的解决方案(为了完成线程):
[一、二、三、四、五、六、七]
更好的是,使用
Pattern.splitAsStream()
:csbfibhn3#
mznpcxlj4#
您可以使用
String.split()
和Long.valueOf()
:dddzy1tm5#
如果您不使用java8并且不想使用循环,那么可以使用Guava
正如其他人提到的,对于Java8,您可以使用流。
vnjpjtjt6#
我最近使用了以下方法:
这使用了来自Guava的Splitter(用于处理空字符串和空格),并且没有使用surprising String.split()。
ruarlubt7#
我会用谷歌的Guava库来做这件事。字符串。分裂可能会导致许多麻烦。