我有一个数组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
答案 0 :(得分:0)
如果您刚开始使用Java,这可能有点太复杂。但是,如果您对Java流进行一些研究,这将成为真正的海峡前卫任务:
Map<String, List<Student>> studentsByGroup = Arrays
.stream(students)
.collect(groupinBy(Student::getGroup));
这将为您提供map
,其中key
是学生的小组,而value
是list
,其中包含当前小组的所有学生。
输出示例可能类似于
{ K61CB = [Student1,Student2], K63DE => [Student4] ....}
相同的方法适用于删除操作。假设您要基于某些属性(例如id == "000"
)从数组/集合中删除学生:
[array/collection].stream()
.filter(student => !student.getId().equals("000"))
.collect(Collectors.toList())
这将为您提供一个ID不等于“ 000”的学生的列表。
当然,您不必在这里使用流,简单的foreach循环就足够了。
我希望这会有所帮助。