@@ -19,39 +19,27 @@ public class LinkedQueueTest {
19
19
private static final String NODE_NAME = "Node" ;
20
20
private static final String SIZE_NAME = "size" ;
21
21
22
- private static final Predicate <Field > NODE_FIELD = field -> field
23
- .getType ().getSimpleName ().equals (NODE_NAME )
24
- & (field .getName ().contains ("next" ));
25
-
26
- private static final Predicate <Field > ELEMENT_FIELD = field -> field
27
- .getGenericType ()
28
- .getTypeName ()
29
- .equals ("T" )
30
- & (field .getName ().contains ("elem" )
31
- | field .getName ().contains ("value" )
32
- | field .getName ().contains ("item" ));
33
-
34
- private static final Predicate <Field > NEXT_FIELD = field -> field
35
- .getGenericType ()
36
- .getTypeName ()
37
- .equals ("Node<T>" )
38
- & (field .getName ().contains ("next" ));
39
-
40
- private static final Predicate <Field > SIZE_FIELD = field -> field
41
- .getType ()
42
- .getSimpleName ()
43
- .equals ("int" )
44
- & (field .getName ().equals (SIZE_NAME ));
45
-
46
- private static final Predicate <Field > HEAD_FIELD = field -> field
47
- .getType ().getSimpleName ().equals (NODE_NAME )
48
- & (field .getName ().contains ("head" )
49
- | field .getName ().contains ("first" ));
50
-
51
- private static final Predicate <Field > TAIL_FIELD = field -> field
52
- .getType ().getSimpleName ().equals (NODE_NAME )
53
- & (field .getName ().contains ("tail" )
54
- | field .getName ().contains ("last" ));
22
+ private static final Predicate <Field > NODE_FIELD = field -> field .getType ().getSimpleName ().equals (NODE_NAME )
23
+ && (field .getName ().contains ("next" ));
24
+
25
+ private static final Predicate <Field > ELEMENT_FIELD = field -> field .getGenericType ().getTypeName ().equals ("T" )
26
+ && (field .getName ().contains ("elem" )
27
+ || field .getName ().contains ("value" )
28
+ || field .getName ().contains ("item" ));
29
+
30
+ private static final Predicate <Field > NEXT_FIELD = field -> field .getGenericType ().getTypeName ().endsWith ("Node<T>" )
31
+ && (field .getName ().contains ("next" ));
32
+
33
+ private static final Predicate <Field > SIZE_FIELD = field -> field .getType ().getSimpleName ().equals ("int" )
34
+ && (field .getName ().equals (SIZE_NAME ));
35
+
36
+ private static final Predicate <Field > HEAD_FIELD = field -> field .getType ().getSimpleName ().equals (NODE_NAME )
37
+ && (field .getName ().contains ("head" )
38
+ || field .getName ().contains ("first" ));
39
+
40
+ private static final Predicate <Field > TAIL_FIELD = field -> field .getType ().getSimpleName ().equals (NODE_NAME )
41
+ && (field .getName ().contains ("tail" )
42
+ || field .getName ().contains ("last" ));
55
43
56
44
private Queue <Integer > integerQueue = new LinkedQueue <>();
57
45
@@ -281,27 +269,17 @@ private Object pollElementFromQueue() {
281
269
282
270
@ SneakyThrows
283
271
private void addIntElementToQueue (int value ) {
284
- Object nodeObj = createNode (value );
285
-
286
- Object head = getAccessibleFieldByPredicate (this .integerQueue ,
287
- HEAD_FIELD )
288
- .get (this .integerQueue );
289
-
290
- Object tail = getAccessibleFieldByPredicate (this .integerQueue ,
291
- TAIL_FIELD )
292
- .get (this .integerQueue );
293
-
294
- Integer size = (Integer ) getAccessibleFieldByPredicate (this .integerQueue ,
295
- SIZE_FIELD )
296
- .get (this .integerQueue );
272
+ Object newNode = createNode (value );
273
+ Object head = getAccessibleFieldByPredicate (this .integerQueue , HEAD_FIELD ).get (this .integerQueue );
274
+ Object tail = getAccessibleFieldByPredicate (this .integerQueue , TAIL_FIELD ).get (this .integerQueue );
275
+ Integer size = (Integer ) getAccessibleFieldByPredicate (this .integerQueue , SIZE_FIELD ).get (this .integerQueue );
297
276
298
277
if (head == null ) {
299
- setHead (nodeObj );
300
- setTail (nodeObj );
278
+ setHead (newNode );
301
279
} else {
302
- setNextInNode (tail , nodeObj );
303
- setTail (nodeObj );
280
+ setNextNode (tail , newNode );
304
281
}
282
+ setTail (newNode );
305
283
306
284
if (size == null ) {
307
285
setInternalSize (1 );
@@ -359,11 +337,9 @@ private void setTail(Object obj) {
359
337
}
360
338
361
339
@ SneakyThrows
362
- private void setNextInNode (Object target , Object obj ) {
363
- Field [] nodeFields = target .getClass ().getDeclaredFields ();
364
- /*`nodeFields[1]` is the `next` filed*/
365
- nodeFields [1 ].setAccessible (true );
366
- nodeFields [1 ].set (target , obj );
340
+ private void setNextNode (Object current , Object next ) {
341
+ Field nodeNextField = getAccessibleFieldByPredicate (current , NEXT_FIELD );
342
+ nodeNextField .set (current , next );
367
343
}
368
344
369
345
private Field getAccessibleFieldByPredicate (Object object , Predicate <Field > predicate ) {
0 commit comments