@Override public IntTo<X> at(final int index) { return map.get(Integer.toString(index)); }
@Override public Deque<IntTo<X>> asDeque() { final Deque<IntTo<X>> deque = newDeque(); final String[] keys = map.keyArray(); Arrays.sort(keys); for (final String key : keys) { deque.add(map.get(key)); } return deque; }
@Override public Map<Integer, IntTo<X>> toMap(Map<Integer, IntTo<X>> into) { if (into == null) { into = newMap(); } for (final String key : map.keyArray()) { into.put(Integer.parseInt(key), map.get(key)); } return into; }
@Override public boolean findRemove(final IntTo<X> value, final boolean all) { if (value == null) { return false; } boolean success = false; final String[] keys = map.keyArray(); main: for (int i = keys.length; i-->0;) { final String key = keys[i]; final IntTo<X> item = map.get(key); if (item.size() == value.size()) { for (int j = item.size(); j-->0;) { if (!equals(item.get(j), value.get(j))) { continue main; } } if (!all) { return true; } success = true; } } return success; }
@Override public int indexOf(final IntTo<X> value) { if (value == null) { return -1; } final String[] keys = map.keyArray(); main: for (int i = keys.length; i-->0;) { final String key = keys[i]; final IntTo<X> item = map.get(key); if (item.size() == value.size()) { for (int j = item.size(); j-->0;) { if (!equals(item.get(j), value.get(j))) { continue main; } } return Integer.parseInt(key); } } return -1; }
@Override @SuppressWarnings({ "rawtypes", "unchecked" }) public Collection<IntTo<X>> toCollection(Collection<IntTo<X>> into) { if (into == null) { into = newList(); } if (map instanceof StringToAbstract) { into.addAll(((StringToAbstract) map).valueSet()); } else { final String[] keys = map.keyArray(); Arrays.sort(keys); for (final String key : keys) { into.add(map.get(key)); } } return into; }
@Override public void add(final int key, final X item) { map.get(Integer.toString(key)).add(item); }
@Override public IntTo<X> get(final Object key) { assertValid(key); return map.get(String.valueOf(key)); }
@Override public List<IntTo<X>> asList() { final List<IntTo<X>> list = newList(); final String[] keys = map.keyArray(); Arrays.sort(keys); for (final String key : keys) { list.add(map.get(key)); } return list; }
@Override public IntTo<X> getValue() { return map.get(asString); }
@Override public IntTo<X>[] toArray() { updateMax(); @SuppressWarnings("unchecked") final IntTo<X>[] results = new IntTo[max]; for (int i = max;i-->0;) { results[i] = map.get(String.valueOf(i)); } assert noNegatives() : "Cannot use .toArray on an IntTo.Many with negative key values: "+Arrays.asList(map.keyArray()); return results; }