package maps.bookindex; import java.util.*; public class BookIndex { private TreeMap<String, TreeMap<Integer, Integer>> map = new TreeMap<String, TreeMap<Integer, Integer>>(); public void add(String word, int page) { TreeMap<Integer, Integer> tmp; if((tmp = map.get(word)) == null) { TreeMap<Integer, Integer> intMap = new TreeMap<Integer, Integer>(); intMap.put(new Integer(page), new Integer(1)); map.put(word, intMap); } else { Integer tmp1; if((tmp1 = tmp.get(new Integer(page))) == null) tmp.put(new Integer(page), new Integer(1)); else { int ii = tmp1.intValue()+1; tmp.put(new Integer(page), new Integer(ii)); } } } public LinkedList<Integer> onPages(String word) { TreeMap<Integer, Integer> tmp = map.get(word); if(tmp == null) return null; LinkedList<Integer> result = new LinkedList<Integer>(); Set<Integer> set = tmp.keySet(); Iterator<Integer> it = set.iterator(); while(it.hasNext()) result.add(it.next()); return result; } public void printPagesOf(String word) { LinkedList<Integer> tmp = onPages(word); Iterator<Integer> it = tmp.iterator(); //System.out.print(it.next()); while(it.hasNext()) System.out.print(", " + it.next()); System.out.println(); } public LinkedList<String> wordsOnPage(int page) { LinkedList<String> result = new LinkedList<String>(); Set<Map.Entry<String,TreeMap<Integer, Integer>>> set = map.entrySet(); Iterator<Map.Entry<String,TreeMap<Integer, Integer>>> it = set.iterator(); Map.Entry<String, TreeMap<Integer, Integer>> tmp; TreeMap<Integer, Integer> tmp1; while(it.hasNext()) { tmp = it.next(); tmp1 = tmp.getValue(); if(tmp1.containsKey(new Integer(page))) result.add(tmp.getKey()); } return result; } public String toString() { return map.toString(); } }