// ---------
// Fill.java
// ---------

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.ListIterator;

final class Fill {
    /**
     * O(1) in space
     * O(n) in time
     */
    public static void eval (long[] a, int b, int e, long v) {
        assert b <= e;
        while (b != e) {
            a[b] = v;
            ++b;}}

    /**
     * O(1) in space
     * O(n) in time
     */
    public static void eval (Object[] a, int b, int e, Object v) {
        assert b <= e;
        while (b != e) {
            a[b] = v;
            ++b;}}

    /**
     * O(1) in space
     * O(n) in time
     */
    public static <T> void eval (List<? super T> x, T v) {
        final ListIterator<? super T> p = x.listIterator();
        while (p.hasNext()) {
            p.next();
            p.set(v);}}}

final class FillTest {
    public static void main (String[] args) {
        System.out.println("Fill.java");

        {
        final long[] a = {2, 3, 4};
        Arrays.fill(a, 0, a.length, 5);
        assert Arrays.equals(a, new long[]{5, 5, 5});
        }

        {
        final long[] a = {2, 3, 4};
        Fill.eval(a, 0, a.length, 5);
        assert Arrays.equals(a, new long[]{5, 5, 5});
        }

        {
        final String[] a = {"abc", "def", "ghi"};
        Arrays.fill(a, 0, a.length, "jkl");
        assert Arrays.equals(a, new String[]{"jkl", "jkl", "jkl"});
        }

        {
        final String[] a = {"abc", "def", "ghi"};
        Fill.eval(a, 0, a.length, "jkl");
        assert Arrays.equals(a, new String[]{"jkl", "jkl", "jkl"});
        }

        {
        final List<String> x = Arrays.asList("abc", "def", "ghi");
        Collections.fill(x, "jkl");
        assert x.toString().equals("[jkl, jkl, jkl]");
        }

        {
        final List<String> x = Arrays.asList("abc", "def", "ghi");
        Fill.eval(x, "jkl");
        assert x.toString().equals("[jkl, jkl, jkl]");
        }

        System.out.println("Done.");}}


syntax highlighted by Code2HTML, v. 0.9.1