Java:打印每个组中的学生列表

时间:2018-07-05 14:28:21

标签: java

我有一个数组students []包含学生的信息。我想编写函数studentByGroup(),该函数可以列出每个组中的学生。

嘘,我第一次用sof

我的学生班:

class Student {

//    private String
    private String name;
    private String id;
    private String group;
    private String email;

//    constructor #1
    public Student(String name, String id, String group, String email) {
        this.name = name;
        this.id = id;
        this.group = group;
        this.email = email;
    }

//    constructor #2
    public Student() {
        this.name = "Student";
        this.id = "000";
        this.group = "K61CB";
        this.email = "uet@vnu.edu.vn";
    }

//    constructor #3
    public Student(String n, String sid, String em) {
        this.name = n;
        this.id = sid;
        this.group = "K61CB";
        this.email = em;
    }

//    constructor #4
    public Student(Student s) {
        this.name = s.name;
        this.id = s.id;
        this.group = s.group;
        this.email = s.email;
    }

//     getter & setter

//    method
    public String getInfo() {
        return name + "\n" + id + "\n" + group + "\n" + email + "\n";
    }

}

我该如何使用 studentsByGroup removeStudent

1 个答案:

答案 0 :(得分:0)

如果您刚开始使用Java,这可能有点太复杂。但是,如果您对Java流进行一些研究,这将成为真正的海峡前卫任务:

Map<String, List<Student>> studentsByGroup = Arrays
                            .stream(students)
                            .collect(groupinBy(Student::getGroup));

这将为您提供map,其中key是学生的小组,而valuelist,其中包含当前小组的所有学生。

输出示例可能类似于

{ K61CB = [Student1,Student2], K63DE => [Student4] ....}

相同的方法适用于删除操作。假设您要基于某些属性(例如id == "000")从数组/集合中删除学生:

[array/collection].stream()
                  .filter(student => !student.getId().equals("000"))
                  .collect(Collectors.toList())

这将为您提供一个ID不等于“ 000”的学生的列表。

当然,您不必在这里使用流,简单的foreach循环就足够了。

Stream

我希望这会有所帮助。