package com.graduation.project.dataCollector.test.stream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class studentStream {
private List<Student> students;
static{
// 初始化
List<Student> students = new ArrayList<Student>() {
{
add(new Student(20160001, "孔明", 20, 1, "土木工程", "武汉大学"));
add(new Student(20160002, "伯约", 21, 2, "信息安全", "武汉大学"));
add(new Student(20160003, "玄德", 22, 3, "经济管理", "武汉大学"));
add(new Student(20160004, "云长", 21, 2, "信息安全", "武汉大学"));
add(new Student(20161001, "翼德", 21, 2, "机械与自动化", "华中科技大学"));
add(new Student(20161002, "元直", 23, 4, "土木工程", "华中科技大学"));
add(new Student(20161003, "奉孝", 23, 4, "计算机科学", "华中科技大学"));
add(new Student(20162001, "仲谋", 22, 3, "土木工程", "浙江大学"));
add(new Student(20162002, "鲁肃", 23, 4, "计算机科学", "浙江大学"));
add(new Student(20163001, "丁奉", 24, 5, "土木工程", "南京大学"));
}
};
}
public static void main(String[] args) {
List<Student> civilStudents = students.stream()
.filter(student -> "土木工程".equals(student.getMajor())).limit(2)
.collect(Collectors.toList());
}
}
package com.graduation.project.dataCollector.test.stream;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Data;
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Student {
/** 学号 */
private long id;
private String name;
private int age;
/** 年级 */
private int grade;
/** 专业 */
private String major;
/** 学校 */
private String school;
}
根据楼下的回答,修改完
package com.graduation.project.dataCollector.test.stream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class StudentStream {
private static List<Student> students;
static{
// 初始化
students = new ArrayList<Student>() {
{
add(new Student(20160001, "孔明", 20, 1, "土木工程", "武汉大学"));
add(new Student(20160002, "伯约", 21, 2, "信息安全", "武汉大学"));
add(new Student(20160003, "玄德", 22, 3, "经济管理", "武汉大学"));
add(new Student(20160004, "云长", 21, 2, "信息安全", "武汉大学"));
add(new Student(20161001, "翼德", 21, 2, "机械与自动化", "华中科技大学"));
add(new Student(20161002, "元直", 23, 4, "土木工程", "华中科技大学"));
add(new Student(20161003, "奉孝", 23, 4, "计算机科学", "华中科技大学"));
add(new Student(20162001, "仲谋", 22, 3, "土木工程", "浙江大学"));
add(new Student(20162002, "鲁肃", 23, 4, "计算机科学", "浙江大学"));
add(new Student(20163001, "丁奉", 24, 5, "土木工程", "南京大学"));
}
};
}
public static void main(String[] args) {
// List<Student> civilStudents = students.stream()
// .filter(student -> "土木工程".equals(student.getMajor())).limit(2)
// .collect(Collectors.toList());
students.stream()
.filter(student -> "土木工程".equals(student.getMajor()))
.limit(2)
.forEach(System.out::println);
}
}
题主首先先回答你的问题
直接改为:
这里解释哈,采用
Stream
对数据进行收集完之后,collect
是把Stream
中的数据收集起来,而forEach
才是遍历每一个数据进行遍历处理的,这样就可以直接打印出来了不过有几点需要指出的是,题主这个贴的代码问题有点小多,copy过来编译都不过
students
进行静态模块的赋值,但是students
竟然不是static
的,所以private List<Student> students
改为private static List<Student> students
List<Student> students
了,List<Student> students = new ArrayList<Student>()
改为students = new ArrayList<Student>()
studentStream
首字母请大写...非常别扭...studentStream
改为StudentStream
以上就是答案哈~