@Override public boolean containsKey(long id) { return tryGetIndex(id) >= 0; }
@Override public int getIndex(long id) { int idx = tryGetIndex(id); if (idx < 0) { throw new IllegalArgumentException("key " + id + " not in index"); } else { return idx; } }
/** * Get an index for a key, generating a new one if necessary. * * @param key The key. * @return The index for <var>key</var>. If the key has already been added to the index, * the old index is returned; otherwise, a new index is generated and returned. */ public int internId(long key) { int idx = tryGetIndex(key); if (idx < 0) { idx = keyList.size(); keyList.add(key); indexMap.put(key, idx); } return idx; }
@Test public void testInternId() { HashKeyIndex idx = new HashKeyIndex(); assertThat(idx.size(), equalTo(0)); assertThat(idx.tryGetIndex(42), lessThan(0)); assertThat(idx.internId(42), equalTo(0)); assertThat(idx.getKey(0), equalTo(42L)); assertThat(idx.tryGetIndex(42), equalTo(0)); }
@Override public boolean containsKey(long id) { return tryGetIndex(id) >= 0; }
@Override public int getIndex(long id) { int idx = tryGetIndex(id); if (idx < 0) { throw new IllegalArgumentException("key " + id + " not in index"); } else { return idx; } }
/** * Get an index for a key, generating a new one if necessary. * * @param key The key. * @return The index for <var>key</var>. If the key has already been added to the index, * the old index is returned; otherwise, a new index is generated and returned. */ public int internId(long key) { int idx = tryGetIndex(key); if (idx < 0) { idx = keyList.size(); keyList.add(key); indexMap.put(key, idx); } return idx; }