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

java.util.stream.Collector Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2016 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package java.util.stream;

import static javaemul.internal.InternalPreconditions.checkNotNull;

import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.function.Supplier;

/**
 * See the
 * official Java API doc for details.
 * @param  the type of data to be collected
 * @param  the type of accumulator used to track results
 * @param  the final output data type
 */
public interface Collector {

  /**
   * See 
   * the official Java API doc for details.
   */
  enum Characteristics { CONCURRENT, IDENTITY_FINISH, UNORDERED }

  static  Collector of(
      Supplier supplier,
      BiConsumer accumulator,
      BinaryOperator combiner,
      Function finisher,
      Characteristics... characteristics) {
    checkNotNull(supplier);
    checkNotNull(accumulator);
    checkNotNull(combiner);
    checkNotNull(finisher);
    checkNotNull(characteristics);
    return new CollectorImpl<>(supplier, accumulator, combiner, finisher, characteristics);
  }

  static  Collector of(
      Supplier supplier,
      BiConsumer accumulator,
      BinaryOperator combiner,
      Characteristics... characteristics) {
    checkNotNull(supplier);
    checkNotNull(accumulator);
    checkNotNull(combiner);
    checkNotNull(characteristics);
    return new CollectorImpl(
        supplier, accumulator, combiner, Function.identity(), characteristics);
  }

  Supplier supplier();

  BiConsumer accumulator();

  Set characteristics();

  BinaryOperator combiner();

  Function finisher();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy