/** * */ package org.cmg.ml.sam.sim.pm; import java.util.HashMap; import java.util.Map.Entry; import java.util.Set; /** * @author loreti * */ public class PopulationDrift<S> { private HashMap<S,Drift> populationDrift; public PopulationDrift() { this.populationDrift = new HashMap<>(); } public void addToPreset( S s , int x ) { Drift d = getDrift( s ); d.addToPreset(x); } public void addToPoset( S s , int x ) { Drift d = getDrift( s ); d.addToPoset(x); } private Drift getDrift(S s) { Drift d = populationDrift.get(s); if (d == null) { d = new Drift(); populationDrift.put(s, d); } return d; } public Set<Entry<S, Drift>> getDriftMap() { return populationDrift.entrySet(); } public PopulationState<S> apply( PopulationState<S> state ) { PopulationState<S> newState = state.copy(); populationDrift.forEach((s,d) -> newState.apply(s,d)); return newState; } }