23

inputのような一連の数値を1,2,3,4,5,6,7単一の として持っているとしStringます。Listこれらの数値をLongオブジェクトの に変換したいと思いますList<Long>

誰でも簡単な方法をお勧めできますか?

4

7 に答える 7

63

このような意味ですか?

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(",")));
于 2012-06-15T14:03:36.680 に答える
11

を使用したシンプルで便利なソリューション(スレッドを完成させるため):

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());
于 2014-12-16T11:15:25.633 に答える
3
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
    }
}
于 2012-06-15T14:11:19.733 に答える
2

あなたは使用することができ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);
于 2014-10-28T00:02:33.670 に答える
-14

私はそれを行うために優れたグーグルのGuavaライブラリを使用します。String.split は多くの問題を引き起こす可能性があります。

String numbers="1,2,3,4,5,6,7";
Iterable<String> splitIterator = Splitter.on(',').split(numbers);
List<String> list= Lists.newArrayList(splitIterator );
于 2012-06-15T14:09:13.017 に答える