将字符串转换为List <Long>

use*_*404 6 java

我有一个逗号分隔值的字符串,我从数据库得到direclty.现在我想将整个字符串传递给另一个查询,但所需的数据类型很长,我想使用in子句来完成此操作.

str1 = [123,456,789];
Run Code Online (Sandbox Code Playgroud)

有没有直接的方法来做它而不是循环.

小智 7

您可以使用Java 8的Lambda函数来实现此功能而无需循环

    String string = "1, 2, 3, 4";
    List<Long> list = Arrays.asList(string.split(",")).stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)


小智 6

番石榴

List<Long> longs = Lists.newArrayList(Iterables.transform(Splitter.on(',').split("1,2,3"), new Function<String, Long>() {
    public Long apply(final String in) {
        return in == null ? null : Longs.tryParse(in);
    }
}));
Run Code Online (Sandbox Code Playgroud)

编辑:

List<String>stringList)作为输入:

List<Long> longs = Lists.newArrayList(Lists.transform(stringList, new Function<String, Long>() {
    public Long apply(final String in) {
        return in == null ? null : Longs.tryParse(in);
    }
}));
Run Code Online (Sandbox Code Playgroud)


Bie*_*vid 6

比 virag 的答案短一点,因为它跳过 asList() 并且不进行字符串修剪。

List<Long> list = Arrays.stream(str.split(",")).map(Long::valueOf).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)