将逗号分隔值转换为List

假设我有一组数字,如1,2,3,4,5,6,7输入为单个String 。 我想将这些数字转换为Long对象List ,即List

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

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

 String numbers="1,2,3,4,5,6,7"; Iterable splitIterator = Splitter.on(',').split(numbers); List list= Lists.newArrayList(splitIterator ); 

你的意思是这样的?

 String numbers = "1,2,3,4,5,6,7"; List list = new ArrayList(); for (String s : numbers.split(",")) list.add(Long.parseLong(s)); System.out.println(list); 

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

 List list = Stream.of(numbers.split(",")) .map(Long::parseLong) .collect(Collectors.toList()); 

如果你想获得List ,可以使用更短的版本

 List fixedSizeList = Arrays.asList(numbers.split(",")); List rezisableList = new ArrayList<>(fixedSizeList); 

或在线

 List list = new ArrayList<>(Arrays.asList(numbers.split(","))); 

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

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

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

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

 Pattern.compile(",").splitAsStream(str).map(Long::parseLong).collect(Collectors‌​.toList()); 
 String input = "1,2,3,4,5,6,7"; String[] numbers = input.split("\\,"); List result = new ArrayList(); for(String number : numbers) { try { result.add(Integer.parseInt(number.trim())); } catch(Exception e) { // log about conversion error } } 

您可以使用String.split()Long.valueOf()

 String numbers = "1,2,3,4,5,6,7"; List list = new ArrayList(); for (String s : numbers.split(",")) list.add(Long.valueOf(s)); System.out.println(list); 

如果您不在java8上并且不想使用循环,那么您可以使用Guava

 List longValues = Lists.transform(Arrays.asList(numbersArray.split(",")), new Function() { @Override public Long apply(String input) { return Long.parseLong(input.trim()); } }); 

正如其他人提到的Java8,您可以使用Streams。

  List numbers = Arrays.asList(numbersArray.split(",")) .stream() .map(String::trim) .map(Long::parseLong) .collect(Collectors.toList());;