假設我有一組數字,如1,2,3,4,5,6,7
輸入爲單個String
。我想將這些數字轉換爲List
的Long
對象,即List<Long>
。將逗號分隔值轉換爲列表<Long>
任何人都可以推薦最簡單的方法嗎?
假設我有一組數字,如1,2,3,4,5,6,7
輸入爲單個String
。我想將這些數字轉換爲List
的Long
對象,即List<Long>
。將逗號分隔值轉換爲列表<Long>
任何人都可以推薦最簡單的方法嗎?
我會用優秀的谷歌的番石榴庫來做到這一點。 String.split會導致很多麻煩。
String numbers="1,2,3,4,5,6,7";
Iterable<String> splitIterator = Splitter.on(',').split(numbers);
List<String> list= Lists.newArrayList(splitIterator);
你的意思是這樣的嗎?
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> rezisableList = new ArrayList<>(fixedSizeList);
或onliner
List<String> list = new ArrayList<>(Arrays.asList(numbers.split(",")));
是的,你是對的..其他更簡單的方式... – Kathir
String input = "1,2,3,4,5,6,7";
String[] numbers = input.split("\\,");
List<Integer> result = new ArrayList<Integer>();
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<Long> list = new ArrayList<Long>();
for (String s : numbers.split(","))
list.add(Long.valueOf(s));
System.out.println(list);
使用java-8簡單和方便的解決方案(該線程完成的緣故):
String str = "1,2,3,4,5,6,7";
List<Long> 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());
如果你不是java8,不希望使用循環,那麼你可以使用Guava
List<Long> longValues = Lists.transform(Arrays.asList(numbersArray.split(",")), new Function<String, Long>() {
@Override
public Long apply(String input) {
return Long.parseLong(input.trim());
}
});
正如其他人所說的Java8你可以使用流。
List<Long> numbers = Arrays.asList(numbersArray.split(","))
.stream()
.map(String::trim)
.map(Long::parseLong)
.collect(Collectors.toList());;
而不是'Arrays.asList(numbersArray.split(「,」))。可以使用stream()',只需'Arrays.stream(numbersArray.split(「,」))'或'Stream.of(numbersArray.split(「,」))'。 –
@UtkuÖzdemir實際上不能。在這種情況下,Lists.transform不能用於將字符串轉換爲長整型。 –
我的意思是java8解決方案,而不是番石榴。 –
謝謝,它得到了工作。 – Kathir
它是如何解決問題的?列表在哪裏? –
Swamy
不要使用標準的Java(因此不是最簡單的方法),既不能解決問題。 –