Add Arrays$ArrayList::replaceAll
and corresponding test.
Bug: 27540008
(cherry-picked from commit 2c5ded18d09c06540892bfee5d20b69038029f8a)
Change-Id: Ib755e5f183fc05d03b1696c3c660d8508fe719f6
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/Arrays2Test.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/Arrays2Test.java
index a61e343..3caf588 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/Arrays2Test.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/Arrays2Test.java
@@ -486,4 +486,21 @@
fail();
} catch(NullPointerException expected) {}
}
+
+ public void test_replaceAll() throws Exception {
+ List<Integer> list = Arrays.asList(0, 1, 2);
+ list.replaceAll(k -> k + 1);
+ assertEquals((Integer)1, list.get(0));
+ assertEquals((Integer)2, list.get(1));
+ assertEquals((Integer)3, list.get(2));
+ assertEquals(3, list.size());
+ }
+
+ public void test_replaceAll_NPE() throws Exception {
+ List<Integer> list = Arrays.asList(0, 1, 2);
+ try {
+ list.replaceAll(null);
+ fail();
+ } catch(NullPointerException expected) {}
+ }
}
diff --git a/ojluni/src/main/java/java/util/Arrays.java b/ojluni/src/main/java/java/util/Arrays.java
index 6274b45..38980df 100755
--- a/ojluni/src/main/java/java/util/Arrays.java
+++ b/ojluni/src/main/java/java/util/Arrays.java
@@ -33,6 +33,7 @@
import java.util.function.IntToDoubleFunction;
import java.util.function.IntToLongFunction;
import java.util.function.IntUnaryOperator;
+import java.util.function.UnaryOperator;
import java.util.stream.DoubleStream;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
@@ -3696,6 +3697,15 @@
}
@Override
+ public void replaceAll(UnaryOperator<E> operator) {
+ Objects.requireNonNull(operator);
+ E[] a = this.a;
+ for (int i = 0; i < a.length; i++) {
+ a[i] = operator.apply(a[i]);
+ }
+ }
+
+ @Override
public Spliterator<E> spliterator() {
return Spliterators.spliterator(a, Spliterator.ORDERED);
}