From 2776ef847b529fb2785099af9ad02cf950143210 Mon Sep 17 00:00:00 2001 From: TheStonedTurtle <29030969+TheStonedTurtle@users.noreply.github.com> Date: Fri, 15 Feb 2019 22:50:47 -0800 Subject: [PATCH] Optimize containsAllItemIds --- .../net/runelite/client/util/ItemUtil.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/util/ItemUtil.java b/runelite-client/src/main/java/net/runelite/client/util/ItemUtil.java index 1a29922ff5..c3cfeb599e 100644 --- a/runelite-client/src/main/java/net/runelite/client/util/ItemUtil.java +++ b/runelite-client/src/main/java/net/runelite/client/util/ItemUtil.java @@ -27,6 +27,7 @@ package net.runelite.client.util; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; import javax.annotation.Nullable; @@ -84,7 +85,23 @@ public class ItemUtil */ public static boolean containsAllItemIds(Item[] itemArray, Set ids) { - return toGameItemMap(itemArray, ids).size() == ids.size(); + final Set found = new HashSet<>(); + for (Item i : itemArray) + { + final int id = i.getId(); + if (ids.contains(id)) + { + found.add(id); + // Early break if possible + if (found.size() == ids.size()) + { + return true; + } + } + + } + + return found.size() == ids.size(); } /**