Java 从LinkedList中检索特定数据
我想通过使用streams找到性别为女性的学生Java 从LinkedList中检索特定数据,java,Java,我想通过使用streams找到性别为女性的学生 学生班级 public class Student { private String first; private String last; private int ID; private Gender gender; int next=0; List<Course> courses=new LinkedList<>(); List<Student> s
学生
班级
public class Student {
private String first;
private String last;
private int ID;
private Gender gender;
int next=0;
List<Course> courses=new LinkedList<>();
List<Student> students=new LinkedList<>();
public Student(String first, String last, int iD, Gender gender) {
this.first = first;
this.last = last;
ID = iD;
//this.gender = gender;
}
public void enroll(Course c) {
courses.add(c);
}
public void isFemale(){
Student s;
return s.gender=Gender.F;
}
}
public class Main {
public static void main(String[] args) {
List<Student> studentsOfClass=new LinkedList<>();
studentsOfClass.add(new Student("john","smith",01,Gender.M));
studentsOfClass.add(new Student("mick","tayson",05,Gender.M));
studentsOfClass.add(new Student("sara","conor",04,Gender.F));
studentsOfClass.add(new Student("Tana","smith",02,Gender.F));
Course c1=new Course("fiologiya","anna",0234);
Course c2=new Course("mathematics","maria",1134);
Course c3=new Course("phisics","luisa",0534);
studentsOfClass.stream().limit(3).forEach(s->s.enroll(c1));
Collection<Student> femaleStudents= studentsOfClass.stream().filter(Student::isFemale).collect(Collectors.toList());
}
}
main
class
public class Student {
private String first;
private String last;
private int ID;
private Gender gender;
int next=0;
List<Course> courses=new LinkedList<>();
List<Student> students=new LinkedList<>();
public Student(String first, String last, int iD, Gender gender) {
this.first = first;
this.last = last;
ID = iD;
//this.gender = gender;
}
public void enroll(Course c) {
courses.add(c);
}
public void isFemale(){
Student s;
return s.gender=Gender.F;
}
}
public class Main {
public static void main(String[] args) {
List<Student> studentsOfClass=new LinkedList<>();
studentsOfClass.add(new Student("john","smith",01,Gender.M));
studentsOfClass.add(new Student("mick","tayson",05,Gender.M));
studentsOfClass.add(new Student("sara","conor",04,Gender.F));
studentsOfClass.add(new Student("Tana","smith",02,Gender.F));
Course c1=new Course("fiologiya","anna",0234);
Course c2=new Course("mathematics","maria",1134);
Course c3=new Course("phisics","luisa",0534);
studentsOfClass.stream().limit(3).forEach(s->s.enroll(c1));
Collection<Student> femaleStudents= studentsOfClass.stream().filter(Student::isFemale).collect(Collectors.toList());
}
}
公共类主{
公共静态void main(字符串[]args){
列出studentsOfClass=new LinkedList();
添加(新学生(“约翰”,“史密斯”,01,性别M));
添加(新学生(“mick”,“tayson”,05,性别M));
添加(新学生(“sara”,“conor”,04,性别F));
添加(新学生(“塔娜”,“史密斯”,02,性别F));
课程c1=新课程(“fiologiya”,“anna”,0234);
课程c2=新课程(“数学”,“玛丽亚”,1134);
课程c3=新课程(“物理”、“路易莎”,0534);
studentsOfClass.stream().limit(3.forEach(s->s.enroll(c1));
Collection FemalesStudents=studentsOfClass.stream().filter(Student::isFemale.collect(Collectors.toList());
}
}
您正确地使用了流方法,但您的isFamele方法是错误的。它应该返回布尔值并检查当前学生的性别
应该是:
public boolean isFemale()
{
return gender==Gender.F;
}
您还应该取消标记此构造函数行-//this.gender=gender代码>-并可能删除私人性别代码>来自性别枚举
此外,您可以将femaleStudents
的类型从Collection
更改为List
,这更准确。为什么您的性别枚举有性别字段??