rendered paste bodypackage 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()); } } }}