All pastes #763434 Raw Edit

FP.java

public java v1 · immutable
·published 2007-11-06 13:35 UTC
rendered paste body
/* * User: sid * Date: Feb 1, 2002 * Time: 4:22:44 PM */package de.fhro.inf.fp;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public abstract class FP {	/**	 * Führt Funktion f auf jedem Listenelement aus	 * @param f  unäre Funktion	 * @param xs Liste	 * @return ausgeführte Funktion für Verkettungen	 */    public static UnaryFunction forEach(UnaryFunction f, List xs) {    	Iterator i = xs.iterator();    	while (i.hasNext())       	    f.execute(i.next());    	return f;    }        /**     * Führt Funktion f auf jedem Listenelement aus und kopiert Ergebnis in eine neue Liste     * @param f unäre Funktion     * @param xs Eingebeliste     * @return Ausgabeliste     */    public static List map(UnaryFunction f, List xs) {        List result;        result = new ArrayList();       	Iterator i = xs.iterator();    	while (i.hasNext())             result.add(f.execute(i.next()));                return result;    }    /**     * Ermittelt alle Element einer Liste die ein unäres Prädikat erfüllen      * @param p unäres Prädikat     * @param xs Liste     * @return Liste der Elemente die Prädikat erfüllen     */    public static List filter(UnaryPredicate p, List xs) {    	List result = new ArrayList();    	Iterator i = xs.iterator();    	while (i.hasNext()) {    		Object element = i.next();//    		 wenn 2x i.next() benutzt wird, passt das dann?    		if (p.execute(element)) {    			result.add(element);    		}    	}    	return result;    }    /**     * Überprüft ob mindestens ein Element einer Liste ein unäres Prädikat erfüllt     * @param p unäres Prädikat     * @param xs Liste     * @return true falls ein Element Prädikat erfüllt     */    public static boolean some(UnaryPredicate p, List xs) {    	Iterator i = xs.iterator();    	boolean result = false;    	while (i.hasNext()) {    		Object element = i.next();    		if (p.execute(element)) {    			result = true;    			break;    		}    	}    	return result;    }    /**     * Überprüft ob alle Elemente einer Liste ein unäres Prädikat erfüllt     * @param p unäres Prädikat     * @param xs Liste     * @return true falls alle Elemente Prädikat erfüllt     */    public static boolean every(UnaryPredicate p, List xs) {    	Iterator i = xs.iterator();    	boolean result = true;    	while (i.hasNext()) {    		Object element = i.next();    		// falls nur ein Element falsch ist, sofort result auf falsch setzen und abbrechen    		if (!p.execute(element)) {    			result = false;    			break;    		}    	}    	return result;    }    /**     * Berechnet sukzessive Binäre Funktion von Startwert initval und allen Elementen einer Liste      * @param f binäre Funktion     * @param xs Liste     * @param initval Startwert     * @return Endergebnis     */    public static Object reduce(BinaryFunction f, List xs, Object initval) {		Object result = initval;		Iterator i = xs.iterator();		while (i.hasNext())		{			result = f.execute(result, i.next());		}		return result;    } }