8
8
.
9
9
. The ArrayList8 Class was Coded by : Alexandre BOLOT
10
10
.
11
- . Last Modified : 02 /12/17 13:16
11
+ . Last Modified : 17 /12/17 22:47
12
12
.
13
13
14
14
...............................................................................................................................*/
@@ -36,18 +36,25 @@ public boolean addIf (E value, Predicate<? super E> filter)
36
36
return filter .test (value ) && add (value );
37
37
}
38
38
39
- public boolean addAllIf (Collection <? extends E > c , Predicate <? super E > filter )
39
+ public int addAllIf (Collection <? extends E > collection , Predicate <? super E > filter )
40
40
{
41
- for (E e : c )
42
- {
43
- if (!addIf (e , filter )) return false ;
44
- }
41
+ Objects .requireNonNull (collection );
42
+ Objects .requireNonNull (filter );
43
+
44
+ ArrayList8 <E > paramList = new ArrayList8 <>();
45
+ paramList .addAll (collection );
45
46
46
- return true ;
47
+ ArrayList8 <E > sublist = paramList .subList (filter );
48
+
49
+ this .addAll (sublist );
50
+
51
+ return sublist .size ();
47
52
}
48
53
49
54
public boolean contains (Predicate <? super E > filter )
50
55
{
56
+ Objects .requireNonNull (filter );
57
+
51
58
for (E e : this )
52
59
{
53
60
if (filter .test (e )) return true ;
@@ -58,6 +65,8 @@ public boolean contains (Predicate<? super E> filter)
58
65
59
66
public int countIf (Predicate <? super E > filter )
60
67
{
68
+ Objects .requireNonNull (filter );
69
+
61
70
int count = 0 ;
62
71
63
72
for (E e : this )
@@ -70,22 +79,26 @@ public int countIf (Predicate<? super E> filter)
70
79
71
80
public ArrayList8 <E > subList (Predicate <? super E > filter )
72
81
{
73
- if ( this . isEmpty ()) return this ;
82
+ Objects . requireNonNull ( filter ) ;
74
83
75
84
ArrayList8 <E > newList = new ArrayList8 <>();
76
85
77
- newList .addAllIf ( this , filter );
86
+ this . forEach ( e -> newList .addIf ( e , filter ) );
78
87
79
88
return newList ;
80
89
}
81
90
82
91
public Optional <E > findAny (Predicate <? super E > filter )
83
92
{
93
+ Objects .requireNonNull (filter );
94
+
84
95
return this .isEmpty () ? Optional .empty () : subList (filter ).stream ().findAny ();
85
96
}
86
97
87
98
public Optional <E > findFirst (Predicate <? super E > filter )
88
99
{
100
+ Objects .requireNonNull (filter );
101
+
89
102
for (E e : this )
90
103
{
91
104
if (filter .test (e )) return Optional .of (e );
@@ -96,27 +109,31 @@ public Optional<E> findFirst (Predicate<? super E> filter)
96
109
97
110
public Optional <E > max (Comparator <? super E > comparator )
98
111
{
112
+ Objects .requireNonNull (comparator );
113
+
99
114
if (this .isEmpty ()) return Optional .empty ();
100
115
101
116
E max = this .getRandom ();
102
117
103
118
for (E e : this )
104
119
{
105
- if (comparator .compare (max , e ) > 0 ) max = e ;
120
+ if (comparator .compare (e , max ) > 0 ) max = e ;
106
121
}
107
122
108
123
return Optional .of (max );
109
124
}
110
125
111
126
public Optional <E > min (Comparator <? super E > comparator )
112
127
{
128
+ Objects .requireNonNull (comparator );
129
+
113
130
if (this .isEmpty ()) return Optional .empty ();
114
131
115
132
E min = this .get (0 );
116
133
117
134
for (E e : this )
118
135
{
119
- if (comparator .compare (min , e ) < 0 ) min = e ;
136
+ if (comparator .compare (e , min ) < 0 ) min = e ;
120
137
}
121
138
122
139
return Optional .of (min );
0 commit comments