Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 8 如何在Java8中使用流API按同一类的不同对象填充数组列表?_Java 8_Java Stream - Fatal编程技术网

Java 8 如何在Java8中使用流API按同一类的不同对象填充数组列表?

Java 8 如何在Java8中使用流API按同一类的不同对象填充数组列表?,java-8,java-stream,Java 8,Java Stream,我使用Jsoup库解析一些html。它有类元素,扩展了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"); Ele

我使用Jsoup库解析一些html。它有类元素,扩展了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");
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()));
}
然后,我通过
Student
的对象(有5个
String
字段)填充集合
Student
,如下所示:

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");
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()));
}

for(int j=1;j您可以生成一个整数流(在您的例子中是索引),然后将其转换为一个学生对象流

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());
List student=IntStream
.rangeClosed(0,stateOwnedCount)
.mapToObj(j->新学生(
name.get(j).text(),
文凭.get(j).text(),
special.get(j.text(),
english.get(j.text(),
full.get(j.text())
.collect(Collectors.toList());

在没有流api的情况下,您所拥有的是:更快、可读性更强,并且创建的对象更少。@Eugene您能解释一下我的答案是如何创建更多的对象的,还是比问题中所做的要慢?