import java.util.*;
class Student {
private int id;
public Student
(int id,
String name
) { this.name = name;
this.id = id;
}
public void setId(int id) { this.id = id; }
public String getName
() { return name
; } public int getId() { return id; }
}
class StudentsList {
private List<Student> students = new ArrayList<Student>();
private void updateIds() {
int id = 0;
for(Student t : students)
t.setId(id++);
}
public void add
(String name
) { students.add(new Student(students.size(),name));
}
public void remove(int id) {
students.remove(id);
updateIds();
}
public void insert
(int id,
String name
) { students.add(id,new Student(id,name));
updateIds();
}
public Student get(int id) { return students.get(id); }
public int size() { return students.size(); }
}
class Professor {
private StudentsList studentsList;
private int nextId = 0;
public Professor(StudentsList studentsList) { this.studentsList = studentsList; }
public Student getNext() {
if(nextId >= studentsList.size())
nextId = 0;
return studentsList.get(nextId++);
}
public void studentHasBeenRemoved(int id) {
if(id < nextId)
--nextId;
}
}
class Remover {
private StudentsList studentsList;
private Professor professor;
public Remover(StudentsList studentsList, Professor professor) {
this.studentsList = studentsList;
this.professor = professor;
}
public void remove(Student t) {
professor.studentHasBeenRemoved(t.getId());
studentsList.remove(t.getId());
}
}
public class Main {
public static void main
(String[] args
) { StudentsList studentsList = new StudentsList();
Professor professor = new Professor(studentsList);
Remover remover = new Remover(studentsList, professor);
studentsList.add("aaaaa");
studentsList.add("bbbbb");
studentsList.add("ccccc");
studentsList.add("ddddd");
studentsList.add("eeeee");
studentsList.add("fffff");
studentsList.add("ggggg");
Student first = professor.getNext();
System.
out.
println(first.
getName()); remover.remove(first); //usuwam aaaaa
remover.remove(studentsList.get(0)); //usuwam bbbbb
remover.remove(studentsList.get(0)); //usuwam ccccc
int n = 7;
while(n > 0) {
System.
out.
println(professor.
getNext().
getName()); --n;
}
}
}