All pastes #469718 Raw Edit

raveb

public java v1 · immutable
·published 2007-05-03 21:22 UTC
rendered paste body
package tl1.A4;import java.util.Map;import java.util.Set;import java.util.HashMap;import java.util.HashSet;import java.util.LinkedList;import java.util.Iterator;import java.util.Stack;public class InvertedListImpl implements InvertedList {	private HashMap List; // Wörter mapped auf LinkedLists	public Map getMap() {		return List;	}	public void addDocument(String filename, Map termsPlusFreqs) {		Set terms = termsPlusFreqs.keySet(); // Set aus Map erstellen		for (Iterator it = terms.iterator(); it.hasNext();) { // Jeden																// schlüssel																// Überprüfen			String subject = (String) it.next(); // Name rausholen			int freq = (Integer) termsPlusFreqs.get(subject);			boolean tester = false;			// Liste erstellen falls nicht vorhanden!			if (List == null) {				List = new HashMap<String, LinkedList>();			}			if (!List.isEmpty())				tester = true;			if (List.containsKey(subject) && tester) { // bereits in List														// enthalten				LinkedList<InvertedListEntry> temp = (LinkedList<InvertedListEntry>) List.get(subject);				List.remove(subject); // Löschen				temp.add(new InvertedListEntry(filename, freq));				List.put(subject, temp);			} else {				LinkedList<InvertedListEntry> temp = new LinkedList<InvertedListEntry>();				temp.add(new InvertedListEntry(filename, freq));				List.put(subject, temp);			}		}	}	public int getFrequency(String filename, String term) {		LinkedList<InvertedListEntry> temp = (LinkedList<InvertedListEntry>) List.get(term);		if (temp != null) {			for (Iterator it = temp.listIterator(); it.hasNext();) {				InvertedListEntry IE = (InvertedListEntry) it.next();				if (IE.getFilename().equals(filename)) {					return IE.getFrequency();				}			}		}		return 0;	}	public int getNumberOfDocuments(String term) {		LinkedList<InvertedListEntry> IL = (LinkedList<InvertedListEntry>) List.get(term);		return IL.size();			}	public Set<String> getOccurences(String term, int minOccurence) {		LinkedList<InvertedListEntry> IL = (LinkedList<InvertedListEntry>) List.get(term);		Set<String> toReturn = new HashSet<String>();		for(Iterator it = IL.listIterator(); it.hasNext();){			InvertedListEntry temp = (InvertedListEntry)it.next();			if(temp.getFrequency()>= minOccurence){				toReturn.add(temp.getFilename());			}		}		return toReturn;	}	public void removeDocument(String filename) {		Set keys = List.keySet();		Stack<InvertedListEntry> teststack = new Stack<InvertedListEntry>();		for (Iterator it = keys.iterator(); it.hasNext();) {			String name = (String) it.next();			LinkedList<InvertedListEntry> IL = (LinkedList<InvertedListEntry>) List.get(name);			for (Iterator it2 = IL.listIterator(); it2.hasNext();) {				InvertedListEntry temp = (InvertedListEntry)it2.next();				if (temp.getFilename().equals(filename)){			//sobald gefunden					teststack.push(temp);				}			}			while(!teststack.empty()){				IL.remove(teststack.pop());			}		}	}}