将逗号分隔值转换为List <Long>

Kat*_*hir 18 java

假设我有一组像1,2,3,4,5,6,7输入一样的数字String.我想将这些数字转换ListLong对象,即List<Long>.

任何人都可以推荐最简单的方法吗?

Psh*_*emo 55

你的意思是这样的?

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);
Run Code Online (Sandbox Code Playgroud)

从Java 8开始,您可以将其重写为

List<Long> list = Stream.of(numbers.split(","))
        .map(Long::parseLong)
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

如果你想得到更短的版本 List<String>

List<String> fixedSizeList = Arrays.asList(numbers.split(","));
List<String> rezisableList = new ArrayList<>(fixedSizeList);
Run Code Online (Sandbox Code Playgroud)

或在线

List<String> list = new ArrayList<>(Arrays.asList(numbers.split(",")));
Run Code Online (Sandbox Code Playgroud)


Uni*_*ron 7

使用简单方便的解决方案(为了完成线程):

String str = "1,2,3,4,5,6,7";
List<Long> list = Arrays.stream(str.split(",")).map(Long::parseLong).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
System.out.println(list);
Run Code Online (Sandbox Code Playgroud)

[1,2,3,4,5,6,7]

更好的是,使用Pattern.splitAsStream():

Pattern.compile(",").splitAsStream(str).map(Long::parseLong).collect(Collectors??.toList());
Run Code Online (Sandbox Code Playgroud)


joc*_*lyn -14

我会使用优秀的谷歌番石榴库来做到这一点。String.split 会引起很多麻烦。

String numbers="1,2,3,4,5,6,7";
Iterable<String> splitIterator = Splitter.on(',').split(numbers);
List<String> list= Lists.newArrayList(splitIterator );
Run Code Online (Sandbox Code Playgroud)

  • 不要使用标准 Java(因此不是最简单的方法),也不能解决问题。 (3认同)
  • 要么这个答案不正确,要么@Kathir 问题不正确。 (2认同)