All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.saxon.tree.jiter.MappingJavaIterable Maven / Gradle / Ivy

There is a newer version: 12.5
Show newest version
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2018-2023 Saxonica Limited
// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
// If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
// This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

package net.sf.saxon.tree.jiter;

import java.util.Iterator;

/**
 * A Java Iterable which applies a mapping function to each item in a supplied Iterable
 * @param  the type of the input items
 * @param  the type of the delivered item
 */


public class MappingJavaIterable implements Iterable {

    private final Iterable input;
    private final java.util.function.Function mapper;

    /**
     * Create a mapping iterable
     * @param in the input sequence
     * @param mapper the mapping function to be applied to each item in the input sequence to
     *               generate the corresponding item in the result sequence. If the mapping
     *               function returns null for a particular input, the item is omitted from the
     *               result sequence.
     */

    public MappingJavaIterable(Iterable in, java.util.function.Function mapper) {
        this.input = in;
        this.mapper = mapper;
    }

    /**
     * Returns an iterator over elements of type {@code T}.
     *
     * @return an Iterator.
     */
    @Override
    public Iterator iterator() {
        return new MappingJavaIterator(input.iterator(), mapper);
    }
}