Skip to content

Commit 5c9522f

Browse files
committed
Few stream methods added in ArrayListCustom.java
1 parent a8182a1 commit 5c9522f

File tree

1 file changed

+97
-7
lines changed

1 file changed

+97
-7
lines changed

src/Lists/ArrayListCustom.java

Lines changed: 97 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
import java.util.*;
44
import java.util.function.Consumer;
5+
import java.util.function.Function;
56
import java.util.function.Predicate;
67

7-
public class ArrayListCustom<T> implements Cloneable,Iterable<T> {
8+
public class ArrayListCustom<T> implements Cloneable, Iterable<T> {
89

910
private final int DEFAULT_CAPACITY = 7;
1011
private int size = 0;
@@ -121,12 +122,6 @@ public void forEach(Consumer<? super T> o) {
121122
}
122123
}
123124

124-
public ArrayListCustom<T> filter(Predicate<T> o) {
125-
Objects.requireNonNull((o));
126-
ArrayListCustom<T> newList = new ArrayListCustom<>();
127-
this.forEach(o::test);
128-
return newList;
129-
}
130125

131126
@Override
132127
public Iterator<T> iterator() {
@@ -155,4 +150,99 @@ public Object[] toArray() {
155150
return ret;
156151
}
157152

153+
154+
// Stream API methods default support in this Arraylist
155+
public ArrayListCustom<T> filter(Predicate<T> o) {
156+
Objects.requireNonNull((o));
157+
ArrayListCustom<T> newList = new ArrayListCustom<>();
158+
this.forEach(item -> {
159+
if (o.test(item)) newList.add(item);
160+
});
161+
return newList;
162+
}
163+
164+
public <R> ArrayListCustom<R> map(Function<T, R> o) {
165+
Objects.requireNonNull((o));
166+
ArrayListCustom<R> newList = new ArrayListCustom<>();
167+
this.forEach(item -> {
168+
newList.add(o.apply(item));
169+
});
170+
return newList;
171+
}
172+
173+
public T findFirst(Predicate<T> o) {
174+
Objects.requireNonNull(o);
175+
for (Object item : this.arr) {
176+
T t = (T) item;
177+
if (o.test(t)) return t;
178+
}
179+
return null;
180+
}
181+
182+
public boolean allMatch(Predicate<T> o) {
183+
Objects.requireNonNull(o);
184+
for (Object item : this.arr) {
185+
T t = (T) item;
186+
if (!o.test(t)) return false;
187+
}
188+
return true;
189+
}
190+
191+
public boolean anyMatch(Predicate<T> o) {
192+
Objects.requireNonNull(o);
193+
for (Object item : this.arr) {
194+
T t = (T) item;
195+
if (o.test(t)) return true;
196+
}
197+
return false;
198+
}
199+
200+
public int findFirstIndex(Predicate<T> o) {
201+
Objects.requireNonNull(o);
202+
int i = 0;
203+
for (Object item : this.arr) {
204+
T t = (T) item;
205+
if (o.test(t)) return i;
206+
i++;
207+
}
208+
return -1;
209+
}
210+
211+
public int count() {
212+
return size();
213+
}
214+
215+
public T max(Comparator<? super T> comparator) {
216+
Objects.requireNonNull(comparator);
217+
if (arr.length == 0) return null;
218+
T maxValue = (T) arr[0];
219+
for (Object val : arr) {
220+
T item = (T) val;
221+
int compareValue = comparator.compare(item, maxValue);
222+
if (compareValue > 0) maxValue = item;
223+
}
224+
return maxValue;
225+
}
226+
227+
public T min(Comparator<? super T> comparator) {
228+
Objects.requireNonNull(comparator);
229+
if (arr.length == 0) return null;
230+
T minValue = (T) arr[0];
231+
for (Object val : arr) {
232+
T item = (T) val;
233+
int compareValue = comparator.compare(item, minValue);
234+
if (compareValue < 0) minValue = item;
235+
}
236+
return minValue;
237+
}
238+
239+
public boolean noneMatch(Predicate<T> p) {
240+
Objects.requireNonNull(p);
241+
for (Object val : arr) {
242+
T item = (T) val;
243+
if (p.test(item)) return false;
244+
}
245+
return true;
246+
}
247+
158248
}

0 commit comments

Comments
 (0)