java-8 - 如何使用Java 8中的流API通过同一类的不同对象填充数组列表?

标签 java-8 java-stream

我使用 Jsoup 库解析一些 html。它有 Elements 类,它扩展了 ArrayList 并且可以包含 DOM 元素的集合。我通过 css 选择器获得 5 个不同的元素列表,如下所示:

Elements names = doc.select(".views-field-person-name");
Elements diplomas = doc.select(".views-field-markdiploma");
Elements special = doc.select(".views-field-mark1");
Elements english = doc.select(".views-field-mark2");
Elements full = doc.select(".views-field-mark");

然后我通过 Student 的对象(有 5 个 String 字段)填充集合 students,如下所示:

for (int j = 1; j <= stateOwnedCount; j++) {
    students.add(new Student(
            names.get(j).text(),
            diplomas.get(j).text(),
            special.get(j).text(),
            english.get(j).text(),
            full.get(j).text()));
}

是否可以使用 Java 8 中的 Stream API 重写此循环?没有想法。

最佳答案

您可以生成一个整数流(在您的情况下是索引),然后将其转换为学生对象流。

List<Student> students = IntStream
        .rangeClosed(0,stateOwnedCount)
        .mapToObj(j -> new Student(
            names.get(j).text(),
            diplomas.get(j).text(),
            special.get(j).text(),
            english.get(j).text(),
            full.get(j).text()))
        .collect(Collectors.toList());

关于java-8 - 如何使用Java 8中的流API通过同一类的不同对象填充数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51686231/

相关文章:

Java - 使用多个 CPU 的非并行代码

java - 有没有一种优雅的方法可以将 Map<P, Optional<Q>> 转换为稀疏 Map<P, Q>?

java - Java 8 Streams 中的字符串操作

java - 如何使用 Java 8 进行分组和收集?

Java Stream sum()短路

java - 如何通过检查 Java 内部列表中的值来对列表进行排序?

java - 更新android studio 3.0.0时找不到错误:java. lang.ClassNotFoundException : Class org. openjdk.jdi.ReferenceType

java - 使用 Java 8 流对集合进行分组和排序

java - 用两个 for 循环简化计数(使用流)

java - 如何比较两个 map 并检索两个 map 中出现的值的键?