From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Samsuik Date: Fri, 15 Oct 2021 18:49:48 +0100 Subject: [PATCH] Optimise ClassInstanceMultiMap removals diff --git a/src/main/java/net/minecraft/util/ClassInstanceMultiMap.java b/src/main/java/net/minecraft/util/ClassInstanceMultiMap.java index 5fb7573022c5af775b2e737dcd05c53cd9ae39ec..a3e5bf8355bbe8d4b8ee687abdb49a04fb39ae75 100644 --- a/src/main/java/net/minecraft/util/ClassInstanceMultiMap.java +++ b/src/main/java/net/minecraft/util/ClassInstanceMultiMap.java @@ -15,7 +15,7 @@ import java.util.stream.Collectors; public class ClassInstanceMultiMap extends AbstractCollection { private final Map, List> byClass = Maps.newHashMap(); private final Class baseClass; - private final List allInstances = Lists.newArrayList(); + private final List allInstances = new me.samsuik.sakura.utils.collections.UnorderedIndexedList<>(); // Sakura public ClassInstanceMultiMap(Class elementType) { this.baseClass = elementType; @@ -59,7 +59,15 @@ public class ClassInstanceMultiMap extends AbstractCollection { throw new IllegalArgumentException("Don't know how to search for " + type); } else { List list = this.byClass.computeIfAbsent(type, (typeClass) -> { - return this.allInstances.stream().filter(typeClass::isInstance).collect(Collectors.toList()); + // Sakura start + List result = new me.samsuik.sakura.utils.collections.UnorderedIndexedList<>(); + for (T allInstance : this.allInstances) { + if (typeClass.isInstance(allInstance)) { + result.add(allInstance); + } + } + return result; + // Sakura end }); return (Collection) Collections.unmodifiableCollection(list); // Sakura - decompile fix }