-
Notifications
You must be signed in to change notification settings - Fork 0
/
StudentArrayOperation.java
278 lines (235 loc) · 7.42 KB
/
StudentArrayOperation.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
import java.util.Date;
/**
* An interface that provide a number of operations for any array of students
*
*/
public interface StudentArrayOperation {
/**
* Returns the array of students
*
* @return the array of students
*
*/
Student[] getStudents();
/**
* Sets the array of students
* if students == null method should throw IllegalArgumentException
*
* @param students
*
* @throws IllegalArgumentException
*/
void setStudents(Student[] students);
/**
* if index lower than 0 or index higher/equal students.length method should
* throw IllegalArgumentException
*
* @param index
*/
Student getStudent(int index);
/**
* Replaces the element at the specified position in this array with the
* specified element. if student == null method should throw
* IllegalArgumentException if index lower than 0 or index higher/equal
* students.length method should throw IllegalArgumentException
*
* @param student
* the student to be stored at the specified position
* @param index
* the index of the element to replace
*
*
* @throws IllegalArgumentException
*/
void setStudent(Student student, int index);
/**
* Appends the specified element to the specified position of this array if
* student == null method should throw IllegalArgumentException if index
* lower than 0 or index higher/equal students.length method should throw
* IllegalArgumentException
*
* @param student
* the element to be appended to this array at the specified
* position
* @param index
* the specified position
*
* @throws IllegalArgumentException
*/
void add(Student student, int index);
/**
* Inserts the specified element at the beginning of this array if student
* == null method should throw IllegalArgumentException
*
* @param student
* the element to add
*
* @throws IllegalArgumentException
*/
void addFirst(Student student);
/**
* Appends the specified element to the end of this array. if student ==
* null method should throw IllegalArgumentException
*
* @param student
* the element to add
*
* @throws IllegalArgumentException
*/
void addLast(Student student);
/**
* Removes the element at the specified position in this array if index
* lower than 0 or index higher/equal students.length method should throw
* IllegalArgumentException
*
* @param index
* the index of the element to be removed
*
* @throws IllegalArgumentException
*/
void remove(int index);
/**
* Removes the first occurrence of the specified element from this array, if
* it is present. If this array does not contain the element, it is
* unchanged and should throw IllegalArgumentException with "Student not
* exist" message if student == null method should throw
* IllegalArgumentException
*
* @param student
* the element to remove
*
* @throws IllegalArgumentException
*/
void remove(Student student);
/**
* Removes all elements from the specified index (except the element with
* specified index) from this array if index lower than 0 or index
* higher/equal students.length method should throw IllegalArgumentException
*
* @param index
* the index elements from should be removed
*
* @throws IllegalArgumentException
*/
void removeFromIndex(int index);
/**
* Removes all elements from the specified element (except the specified
* element) from this array if student == null method should throw
* IllegalArgumentException
*
* @param student
* the element from elements should be removed
*
* @throws IllegalArgumentException
*/
void removeFromElement(Student student);
/**
* Removes all elements to the specified index (except the element with the
* specified index) from this array if index lower than 0 or index
* higher/equal students.length method should throw IllegalArgumentException
*
* @param index
* the index elements to should be removed
*
* @throws IllegalArgumentException
*/
void removeToIndex(int index);
/**
* Removes all elements to the specified element (except the specified
* element) from this array if student == null method should throw
* IllegalArgumentException
*
* @param student
* the element to elements should be removed
*
* @throws IllegalArgumentException
*/
void removeToElement(Student student);
/**
* Performs Bubble Sort to this array
*
*/
void bubbleSort();
/**
* Returns all students with birthday to the specified date if date == null,
* method should throw IllegalArgumentException
*
* @param date
* the date that specify birthday to find students who was born
* before that date and in that date
*
* @return the array of students who was born before/in specified date
*
* @throws IllegalArgumentException
*/
Student[] getByBirthDate(Date date);
/**
* Returns all students with birthday to the specified range of dates
* including specified dates if firstDate == null or lastDate == null,
* method should throw IllegalArgumentException
*
* @param firstDate
* the date that specify birthday to find students from
* @param lastDate
* the date that specify birthday to find students to
*
* @return the array of students who was born in specified range of dates
*
* @throws IllegalArgumentException
*/
Student[] getBetweenBirthDates(Date firstDate, Date lastDate);
/**
* Returns all students with birthday to the specified date and in several
* days after the specified date if date == null, method should throw
* IllegalArgumentException
*
* @param date
* the date that specify birthday to find students from
* @param days
* the number of days that specify the end date
*
* @return the array of students who has birthday in specified date and
* several days after
*
* @throws IllegalArgumentException
*/
Student[] getNearBirthDate(Date date, int days);
/**
* Find student at the specified position and calculate his age (total
* years) if indexOfStudent == 0, method should throw
* IllegalArgumentException
*
* @param indexOfStudent
* the index to find student and calculate age
*
* @return student full years
*
* @throws IllegalArgumentException
*/
int getCurrentAgeByDate(int indexOfStudent);
/**
* Returns all students with age equal the specified age
*
* @param age the age to find students
*
* @return the array of students of the specified age
*/
Student[] getStudentsByAge(int age);
/**
* Finds the maximum average mark for all students in this array
* and returns all students who has the maximum average mark
*
* @return the array of students who has maximum average mark
*
*/
Student[] getStudentsWithMaxAvgMark();
/**
* Finds element which is the next to the specified element
* if student == null, method should throw IllegalArgumentException
*
* @param student the element to which take the next element
*
* @throws IllegalArgumentException
*/
Student getNextStudent(Student student);
}