Long2ObjectMap<LongList> itemUserLists = new Long2ObjectOpenHashMap<LongList>();
LongKeyDomain domain = LongKeyDomain.fromCollection(vectors.keySet()).compactCopy(true);
assert domain.size() == domain.domainSize();
ImmutableList.Builder<ImmutableSparseVector> vecs = ImmutableList.builder();
ImmutableList.Builder<ImmutableSparseVector> nvecs = ImmutableList.builder();
for (LongIterator uiter = domain.activeSetView().iterator(); uiter.hasNext();) {
final long user = uiter.nextLong();
MutableSparseVector vec = vectors.get(user);
// save user's original vector
ImmutableSparseVector userVector = vec.immutable();
vecs.add(userVector);