Sha256: c2cbacd8be510d7f31a4d1cf4849739edebb97460f139294c19edc2a3a2c0030

Contents?: true

Size: 1.93 KB

Versions: 188

Compression:

Stored size: 1.93 KB

Contents

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.function.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

class ListOps {

    static <T> List<T> append(final List<T> list1, final List<T> list2) {
        final List<T> result = new ArrayList<>();
        result.addAll(list1);
        result.addAll(list2);
        return result;
    }

    static <T> List<T> concat(final List<List<T>> listOfLists) {
        final List<T> result = new ArrayList<>();
        listOfLists.forEach(result::addAll);
        return result;
    }

    static <T> List<T> filter(final List<T> list, Predicate<T> predicate) {
        return list.stream().filter(predicate).collect(Collectors.toList());
    }

    static <T> int size(final List<T> list) {
        return list.size();
    }

    static <T, U> List<U> map(final List<T> list, Function<T, U> transform) {
        return list.stream().map(transform).collect(Collectors.toList());
    }

    static <T> List<T> reverse(final List<T> list) {
        final List<T> result = new ArrayList<>(list);
        Collections.reverse(result);
        return result;
    }

    static <T, U> U foldLeft(final List<T> list, final U initial, final BiFunction<U, T, U> f) {
        if (list.isEmpty()) return initial;

        return foldLeft(
                new ArrayList<>(list.subList(1, list.size())),
                f.apply(
                        initial,
                        list.get(0)),
                f);
    }

    static <T, U> U foldRight(final List<T> list, final U initial, final BiFunction<T, U, U> f) {
        if (list.isEmpty()) return initial;

        return f.apply(
                list.get(0),
                foldRight(
                        new ArrayList<>(list.subList(1, list.size())),
                        initial,
                        f));
    }

    private ListOps() {
        // No instances.
    }

}

Version data entries

188 entries across 188 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.179 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.178 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.177 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.176 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.175 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.174 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.173 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.172 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.171 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.170 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.169 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.167 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.166 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.165 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.164 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.163 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.162 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.161 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
trackler-2.2.1.160 tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java