public void lookup(B key) throws IOException { waitingNext = false; if (matchingMode == MATCHING_MODE.ALL_MATCHES) { lookupIndex = 0; for (int lookupIndexLocal = 0; lookupIndexLocal < lookupListSize; lookupIndexLocal++) { ILookupManagerUnit<B> tempLookup = lookupList[lookupIndexLocal]; tempLookup.lookup(key); } } else { try { if (lookupKey.compareTo(key) == 0 && previousResultRetrieved) { nextIsPreviousResult = true; } else { previousResultRetrieved = false; previousResult = null; } } catch (NullPointerException e) { previousResultRetrieved = false; previousResult = null; } noMoreNext = false; } key.copyDataTo(lookupKey); lookupKeyIsInitialized = true; }
/** * Adds the value for the given key to the Table, or upgrades the value if an equal value already * exists (and if compareTo and equals differ) * * @param key: the key to add to the Table * @param value: the value to add to the Table */ public void add(A key, B value) { Vector<B> list = multimap.get(key); if (!contains(key, value)) size++; if (list == null) { list = new Vector<B>(0, 1); list.add(value); multimap.put(key, list); } else { int index = list.indexOf(value); if (index == -1) list.add(value); else if (value.compareTo(list.get(index)) > 0) { list.remove(index); list.add(value); } } }