java - 使用 Java 流从列表中获取第 n 个元素

标签 java java-8 java-stream

我有一个字符串列表,例如 "/100""/100/200"。 我希望通过 / 拆分这些字符串,然后得到一个整数列表列表,例如 [[100],[100,200]]。 如果该列表足够长,我想遍历这个列表列表并从每个列表中获取第 n 个元素,否则移动到下一个列表。

众所周知,每个内部列表的最大长度为n

示例:

n= 3
slashString -> "/100/200/300","/200/300","/100/200/400"

在上面的例子中,我想要一个 300,400 的整数列表。

List<Integer> output = slashString.stream()
        .map(x->Arrays.stream(x.split("/")).collect(Collectors.toList()))
        .filter(x->x.size()==3)

我能想到以上。我最终将如何收集所有整数列表中的第三个元素。

最佳答案

你快到了。

过滤大小为3的列表后,获取第三个元素并将其转换为Integer。

另外,请注意拆分字符串 /100/200 会得到一个 String[] (["", "100", "200"]) 以 空字符串 作为第一个元素。所以,我使用 skip(1)

跳过了第一个元素
List<Integer> result = slashString.stream()
            .map(x-> Arrays.stream(x.split("/"))
                    .skip(1)
                    .collect(Collectors.toList()))
            .filter(x -> x.size() >= 3)
            .map(list -> Integer.valueOf(list.get(2)))
            .collect(Collectors.toList());

关于java - 使用 Java 流从列表中获取第 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51229931/

相关文章:

java - 查找距特定经纬度java距离的所有点

java - 在执行 Java 流时跟踪结果?

java - Wicket 应用程序可以在没有管理员密码的情况下触发自身重启吗?

java - 使用 GSon 形成 JSON 字符串

java - 新的 javadoc 注释 @apiNote

java - 为什么 Java 不提示模棱两可的调用?

java - 是否可以在 Java 8 中执行一个惰性 groupby,返回一个流?

java - 如何将字符串列表转换为 LinkedHashMap?

java - 如何转换有时将转换后的值添加到 Java 8 流/lambda 的循环?

java - while 循环和 printwriter 只向文件写入一行