FastMapEntry.java 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package malte0811.ferritecore;
  2. import net.minecraft.state.Property;
  3. import org.apache.commons.lang3.tuple.Pair;
  4. import javax.annotation.Nonnull;
  5. import java.util.*;
  6. public class FastMapEntry extends AbstractMap<Property<?>, Comparable<?>> {
  7. private final FastMap<?> baseMap;
  8. private final int indexInBaseMap;
  9. public FastMapEntry(FastMap<?> baseMap, int indexInBaseMap) {
  10. this.baseMap = baseMap;
  11. this.indexInBaseMap = indexInBaseMap;
  12. }
  13. @Nonnull
  14. @Override
  15. public Set<Entry<Property<?>, Comparable<?>>> entrySet() {
  16. return new EntrySet();
  17. }
  18. private class EntrySet extends AbstractSet<Map.Entry<Property<?>, Comparable<?>>> {
  19. @Nonnull
  20. @Override
  21. public Iterator<Entry<Property<?>, Comparable<?>>> iterator() {
  22. Iterator<Property<?>> baseIterator = baseMap.getProperties().iterator();
  23. return new Iterator<Entry<Property<?>, Comparable<?>>>() {
  24. @Override
  25. public boolean hasNext() {
  26. return baseIterator.hasNext();
  27. }
  28. @Override
  29. public Entry<Property<?>, Comparable<?>> next() {
  30. Property<?> nextProp = baseIterator.next();
  31. return Pair.of(nextProp, baseMap.getValue(indexInBaseMap, nextProp));
  32. }
  33. };
  34. }
  35. @Override
  36. public int size() {
  37. return baseMap.getProperties().size();
  38. }
  39. }
  40. }