All pastes #965878 Raw Edit

Unbenannt

public text v1 · immutable
·published 2008-04-01 08:52 UTC
rendered paste body
package homework02;

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;

public class Environment {

	private Environment prevEnv;
	private LinkedList<Symbol> keys;
	private LinkedList<Object> values;
	private HashMap<Symbol, Object> myHashMap;

	public Environment() {
		this.keys = new LinkedList<Symbol>();
		this.values = new LinkedList<Object>();
	}

	public Environment(LinkedList<Symbol> paramKeys, Environment prevEnv) {
		this.prevEnv = prevEnv;
		this.keys = new LinkedList<Symbol>();

		if (equalContent(paramKeys) == true) {
			System.out.println("the list has equal content");
			System.exit(0);
		} else {
			System.out.println("the list is ok");
			Iterator iter1 = paramKeys.listIterator();
			while (iter1.hasNext()) {
				Symbol s = (Symbol) iter1.next();
				this.keys.add(s);
			}
		}
	}

	public static boolean equalContent(LinkedList<Symbol> paramKeys) {
		int cnt = 0;

		for (int i = 0; i < paramKeys.size(); i++) {
			Symbol s = paramKeys.get(i);
			for (int j = i; j < paramKeys.size(); j++) {
				Symbol t = paramKeys.get(j);
				if (s.toString().equals(t.toString())) {
					cnt++;
				}
			}
			if (cnt >= 2) {
				System.out.println("doppelt:" + s);
				return true;
			}
			cnt = 0;
		}
		return false;
	}

	public void bind(LinkedList<Object> paramValues) {
		this.values = new LinkedList<Object>();
		this.myHashMap = new HashMap<Symbol, Object>();

		if (this.keys.size() == paramValues.size()) {
			System.out.println("beide listen gleiche größe..");
		} else {
			System.out.println("größe ungleich..");
			System.exit(0);
		}

		Iterator iter1 = paramValues.listIterator();
		while (iter1.hasNext()) {
			Object s = (Object) iter1.next();
			this.values.add(s);
		}

		for (int i = 0; i < this.keys.size(); i++) {
			Symbol s = (Symbol) this.keys.get(i);
			Object o = (Object) this.values.get(i);
			this.myHashMap.put(s, o);
		}
	}

	public Object lookup(Symbol paramKey){

		if (this.prevEnv == null) {
			System.out.println("sorry, nix da");
		} else {
			if (this.myHashMap.get(paramKey) == null) {
				System.out.println(this.myHashMap.get(paramKey));
				System.out.println("hier null");
				this.prevEnv.lookup(paramKey);
			} else {
				System.out.println("param gefunden: "
						+ this.myHashMap.get(paramKey));
				return this.myHashMap.get(paramKey);
			}
		}
		return null;
	}
}