fork download
  1. import java.util.*;
  2.  
  3. class Student {
  4. private String name;
  5. private int id;
  6.  
  7. public Student(int id, String name) {
  8. this.name = name;
  9. this.id = id;
  10. }
  11.  
  12. public void setId(int id) { this.id = id; }
  13. public String getName() { return name; }
  14. public int getId() { return id; }
  15. }
  16.  
  17. class StudentsList {
  18. private List<Student> students = new ArrayList<Student>();
  19.  
  20. private void updateIds() {
  21. int id = 0;
  22. for(Student t : students)
  23. t.setId(id++);
  24. }
  25.  
  26. public void add(String name) {
  27. students.add(new Student(students.size(),name));
  28. }
  29.  
  30. public void remove(int id) {
  31. students.remove(id);
  32. updateIds();
  33. }
  34.  
  35. public void insert(int id, String name) {
  36. students.add(id,new Student(id,name));
  37. updateIds();
  38. }
  39.  
  40. public Student get(int id) { return students.get(id); }
  41. public int size() { return students.size(); }
  42. }
  43.  
  44. class Professor {
  45. private StudentsList studentsList;
  46. private int nextId = 0;
  47.  
  48. public Professor(StudentsList studentsList) { this.studentsList = studentsList; }
  49.  
  50. public Student getNext() {
  51. if(nextId >= studentsList.size())
  52. nextId = 0;
  53. return studentsList.get(nextId++);
  54. }
  55.  
  56. public void studentHasBeenRemoved(int id) {
  57. if(id < nextId)
  58. --nextId;
  59. }
  60. }
  61.  
  62. class Remover {
  63. private StudentsList studentsList;
  64. private Professor professor;
  65.  
  66. public Remover(StudentsList studentsList, Professor professor) {
  67. this.studentsList = studentsList;
  68. this.professor = professor;
  69. }
  70.  
  71. public void remove(Student t) {
  72. professor.studentHasBeenRemoved(t.getId());
  73. studentsList.remove(t.getId());
  74. }
  75. }
  76.  
  77. public class Main {
  78. public static void main(String[] args) {
  79. StudentsList studentsList = new StudentsList();
  80. Professor professor = new Professor(studentsList);
  81. Remover remover = new Remover(studentsList, professor);
  82.  
  83. studentsList.add("aaaaa");
  84. studentsList.add("bbbbb");
  85. studentsList.add("ccccc");
  86. studentsList.add("ddddd");
  87. studentsList.add("eeeee");
  88. studentsList.add("fffff");
  89. studentsList.add("ggggg");
  90.  
  91. Student first = professor.getNext();
  92. System.out.println(first.getName());
  93. remover.remove(first); //usuwam aaaaa
  94. remover.remove(studentsList.get(0)); //usuwam bbbbb
  95. remover.remove(studentsList.get(0)); //usuwam ccccc
  96.  
  97. int n = 7;
  98. while(n > 0) {
  99. System.out.println(professor.getNext().getName());
  100. --n;
  101. }
  102. }
  103. }
  104.  
  105.  
Success #stdin #stdout 0.08s 380160KB
stdin
Standard input is empty
stdout
aaaaa
ddddd
eeeee
fffff
ggggg
ddddd
eeeee
fffff