Dear all,

Thank you for your great job about the openjdk.


I have an idea about a new container, Sieve(I give it the name).


The java file is something like this:
package com.heyifei.studyandshare.utils;

/**
 * @author: ??????(heyifei)
 * @email: [email protected]
 * @address: zhangjiang, pudong new district, shanghai, china
 * @date: 2020/9/21
 * @description:
 */

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;

/**
 * Container:Sieve
 */
public class Sieve implements Serializable {

  private static final long serialVersionUID = 8621987070720161207L;

  /**
   * items in the sieve.
   */
  final List<Object&gt; inSieveItems = new ArrayList<&gt;();

  /**
   * items out of the sieve,coproduct.
   */
  final List<Object&gt; outSieveItems = new ArrayList<&gt;();

  /**
   * predict like the hole on the sieve
   */
  private Predicate<Object&gt; predicate = null;

  public Sieve(){}

  public Sieve(Predicate<Object&gt; predicate){
    if(predicate == null){
      throw new NullPointerException();
    }
    this.predicate = predicate;
  }

  public boolean put(Object o){
    boolean inSieve;
    if(predicate.test(o)){
      inSieveItems.add(o);
      inSieve = true;
    }else{
      outSieveItems.add(o);
      inSieve = false;
    }
    return inSieve;
  }

  public Object take(){
    return inSieveItems;
  }

  public Object getCoproduct(){
    return outSieveItems;
  }

  public int count(){
    return inSieveItems.size();
  }

  public int getCoproductCount(){
    return outSieveItems.size();
  }

}

Thank you.

Reply via email to