/** * Iterator returns the same object every time, just with a different payload. */ public Iterator<PairOfObjectLong<K>> iterator() { return new Iterator<PairOfObjectLong<K>>() { private Iterator<Object2LongMap.Entry<K>> iter = Object2LongFrequencyDistributionFastutil.this.counts .object2LongEntrySet().iterator(); private final PairOfObjectLong<K> pair = new PairOfObjectLong<K>(); @Override public boolean hasNext() { return iter.hasNext(); } @Override public PairOfObjectLong<K> next() { if (!hasNext()) { return null; } Object2LongMap.Entry<K> entry = iter.next(); pair.set(entry.getKey(), entry.getLongValue()); return pair; } @Override public void remove() { throw new UnsupportedOperationException(); } }; }