org.infinispan.util.CacheSetMapper Maven / Gradle / Ivy
package org.infinispan.util;
import java.util.function.Function;
import org.infinispan.CacheSet;
import org.infinispan.CacheStream;
import org.infinispan.commons.util.CloseableIterator;
import org.infinispan.commons.util.CloseableSpliterator;
import org.infinispan.commons.util.IteratorMapper;
import org.infinispan.commons.util.SpliteratorMapper;
/**
* A {@link CacheSet} that allows for a different set to be mapped as a different instance wtih values replaced on
* request. This is useful as a cache set is normally lazily evaluated to prevent having to pull all values into memory
* which can be a lot faster when checking single values and can also prevent out of memory issues.
* @author wburns
* @since 9.0
*/
public class CacheSetMapper extends SetMapper implements CacheSet {
protected final CacheSet realSet;
public CacheSetMapper(CacheSet realSet, Function super E, ? extends R> mapper) {
super(realSet, mapper);
this.realSet = realSet;
}
@Override
public CacheStream stream() {
return realSet.stream().map(mapper);
}
@Override
public CacheStream parallelStream() {
return realSet.parallelStream().map(mapper);
}
@Override
public CloseableSpliterator spliterator() {
return new SpliteratorMapper<>(realSet.spliterator(), mapper);
}
@Override
public CloseableIterator iterator() {
return new IteratorMapper<>(realSet.iterator(), mapper);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy