Java 从LinkedList中检索特定数据

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

我想通过使用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> 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
,这更准确。

为什么您的性别枚举有性别字段??