将逗号分隔值转换为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());;