Java 8 如何在Java8中使用流API按同一类的不同对象填充数组列表?
我使用Jsoup库解析一些html。它有类元素,扩展了ArrayList,可以包含DOM元素的集合。我通过css选择器获得5个不同的元素列表,如下所示: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
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您能解释一下我的答案是如何创建更多的对象的,还是比问题中所做的要慢?