1
1
package CodingUtils ;
2
2
3
+ import org .jetbrains .annotations .Contract ;
4
+ import org .jetbrains .annotations .NotNull ;
5
+
3
6
import java .util .*;
4
7
import java .util .function .Predicate ;
5
8
8
11
.
9
12
. The ArrayList8 Class was Coded by : Alexandre BOLOT
10
13
.
11
- . Last Modified : 17/12/17 22:47
14
+ . Last Modified : 20/01/18 00:17
12
15
.
13
16
14
17
...............................................................................................................................*/
15
18
19
+ @ SuppressWarnings ({"UnusedReturnValue" , "ConstantConditions" })
16
20
public class ArrayList8 <E > extends ArrayList <E >
17
21
{
22
+ //region --------------- Attributes ----------------------
18
23
private Random random = new Random ();
24
+ //endregion
25
+
26
+ //region --------------- Constructors --------------------
27
+ public ArrayList8 ()
28
+ {
29
+ super ();
30
+ }
31
+
32
+ public ArrayList8 (Collection <? extends E > c )
33
+ {
34
+ super (c );
35
+ }
36
+ //endregion
19
37
38
+ //region --------------- Methods -------------------------
20
39
public E getRandom ()
21
40
{
41
+ //region --> Check params
22
42
if (this .isEmpty ()) throw new IndexOutOfBoundsException ("List is empty" );
43
+ //endregion
23
44
24
45
return get (random .nextInt (this .size ()));
25
46
}
26
47
27
48
public E removeRandom ()
28
49
{
50
+ //region --> Check params
29
51
if (this .isEmpty ()) throw new IndexOutOfBoundsException ("List is empty" );
52
+ //endregion
30
53
31
54
return remove (random .nextInt (this .size ()));
32
55
}
33
56
34
- public boolean addIf (E value , Predicate <? super E > filter )
57
+ public boolean addIf (E value , @ NotNull Predicate <? super E > filter )
35
58
{
59
+ //region --> Check params
60
+ if (filter == null ) throw new IllegalArgumentException ("Filter param is null" );
61
+ //endregion
62
+
36
63
return filter .test (value ) && add (value );
37
64
}
38
65
39
- public int addAllIf (Collection <? extends E > collection , Predicate <? super E > filter )
66
+ public int addAllIf (@ NotNull Collection <? extends E > collection , @ NotNull Predicate <? super E > filter )
40
67
{
41
- Objects .requireNonNull (collection );
42
- Objects .requireNonNull (filter );
68
+ //region --> Check params
69
+ if (collection == null ) throw new IllegalArgumentException ("Collection param is null" );
70
+ if (filter == null ) throw new IllegalArgumentException ("Filter param is null" );
71
+ //endregion
43
72
44
73
ArrayList8 <E > paramList = new ArrayList8 <>();
45
74
paramList .addAll (collection );
@@ -51,53 +80,51 @@ public int addAllIf (Collection<? extends E> collection, Predicate<? super E> fi
51
80
return sublist .size ();
52
81
}
53
82
54
- public boolean contains (Predicate <? super E > filter )
83
+ @ Contract (pure = true )
84
+ public boolean contains (@ NotNull Predicate <? super E > filter )
55
85
{
56
- Objects .requireNonNull (filter );
57
-
58
- for (E e : this )
59
- {
60
- if (filter .test (e )) return true ;
61
- }
86
+ //region --> Check params
87
+ if (filter == null ) throw new IllegalArgumentException ("Filter param is null" );
88
+ //endregion
62
89
63
- return false ;
90
+ return this . stream (). anyMatch ( filter :: test ) ;
64
91
}
65
92
66
- public int countIf (Predicate <? super E > filter )
93
+ public int countIf (@ NotNull Predicate <? super E > filter )
67
94
{
68
- Objects .requireNonNull (filter );
69
-
70
- int count = 0 ;
71
-
72
- for (E e : this )
73
- {
74
- if (filter .test (e )) count ++;
75
- }
95
+ //region --> Check params
96
+ if (filter == null ) throw new IllegalArgumentException ("Filter param is null" );
97
+ //endregion
76
98
77
- return count ;
99
+ return ( int ) this . stream (). filter ( filter :: test ). count () ;
78
100
}
79
101
80
- public ArrayList8 <E > subList (Predicate <? super E > filter )
102
+ public ArrayList8 <E > subList (@ NotNull Predicate <? super E > filter )
81
103
{
82
- Objects .requireNonNull (filter );
83
-
84
- ArrayList8 <E > newList = new ArrayList8 <>();
85
-
86
- this .forEach (e -> newList .addIf (e , filter ));
87
-
88
- return newList ;
104
+ //region --> Check params
105
+ if (filter == null ) throw new IllegalArgumentException ("Filter param is null" );
106
+ //endregion
107
+
108
+ return new ArrayList8 <E >()
109
+ {{
110
+ this .forEach (e -> addIf (e , filter ));
111
+ }};
89
112
}
90
113
91
- public Optional <E > findAny (Predicate <? super E > filter )
114
+ public Optional <E > findAny (@ NotNull Predicate <? super E > filter )
92
115
{
93
- Objects .requireNonNull (filter );
116
+ //region --> Check params
117
+ if (filter == null ) throw new IllegalArgumentException ("Filter param is null" );
118
+ //endregion
94
119
95
120
return this .isEmpty () ? Optional .empty () : subList (filter ).stream ().findAny ();
96
121
}
97
122
98
- public Optional <E > findFirst (Predicate <? super E > filter )
123
+ public Optional <E > findFirst (@ NotNull Predicate <? super E > filter )
99
124
{
100
- Objects .requireNonNull (filter );
125
+ //region --> Check params
126
+ if (filter == null ) throw new IllegalArgumentException ("Filter param is null" );
127
+ //endregion
101
128
102
129
for (E e : this )
103
130
{
@@ -107,9 +134,11 @@ public Optional<E> findFirst (Predicate<? super E> filter)
107
134
return Optional .empty ();
108
135
}
109
136
110
- public Optional <E > max (Comparator <? super E > comparator )
137
+ public Optional <E > max (@ NotNull Comparator <? super E > comparator )
111
138
{
112
- Objects .requireNonNull (comparator );
139
+ //region --> Check params
140
+ if (comparator == null ) throw new IllegalArgumentException ("Comparator param is null" );
141
+ //endregion
113
142
114
143
if (this .isEmpty ()) return Optional .empty ();
115
144
@@ -123,9 +152,11 @@ public Optional<E> max (Comparator<? super E> comparator)
123
152
return Optional .of (max );
124
153
}
125
154
126
- public Optional <E > min (Comparator <? super E > comparator )
155
+ public Optional <E > min (@ NotNull Comparator <? super E > comparator )
127
156
{
128
- Objects .requireNonNull (comparator );
157
+ //region --> Check params
158
+ if (comparator == null ) throw new IllegalArgumentException ("Comparator param is null" );
159
+ //endregion
129
160
130
161
if (this .isEmpty ()) return Optional .empty ();
131
162
@@ -138,4 +169,5 @@ public Optional<E> min (Comparator<? super E> comparator)
138
169
139
170
return Optional .of (min );
140
171
}
172
+ //endregion
141
173
}
0 commit comments