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);
         }