mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-19 15:09:25 +00:00
36 lines
1.7 KiB
Diff
36 lines
1.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Taiyou06 <kaandindar21@gmail.com>
|
|
Date: Sun, 1 Jun 2025 18:13:24 +0200
|
|
Subject: [PATCH] optimise ReferenceList
|
|
|
|
|
|
diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/ReferenceList.java b/src/main/java/ca/spottedleaf/moonrise/common/list/ReferenceList.java
|
|
index 8df9406b77eb3c225ebf88bf76a7adb666452f3b..14ac2a533e0b882f26ee4a11f8d6bccfe752c750 100644
|
|
--- a/src/main/java/ca/spottedleaf/moonrise/common/list/ReferenceList.java
|
|
+++ b/src/main/java/ca/spottedleaf/moonrise/common/list/ReferenceList.java
|
|
@@ -47,17 +47,21 @@ public final class ReferenceList<E> implements Iterable<E> {
|
|
|
|
// move the object at the end to this index
|
|
final int endIndex = --this.count;
|
|
- final E end = (E)this.references[endIndex];
|
|
if (index != endIndex) {
|
|
+ // The removed element was not the last one.
|
|
+ // Move the element that was at 'endIndex' (the old tail) to 'index'.
|
|
+ final E end = (E)this.references[endIndex];
|
|
// not empty after this call
|
|
this.referenceToIndex.put(end, index); // update index
|
|
+ this.references[index] = end;
|
|
}
|
|
- this.references[index] = end;
|
|
+ // Null out the slot at 'endIndex'.
|
|
+ // If 'index == endIndex', this was the slot of the removed element.
|
|
+ // If 'index != endIndex', this was the original slot of the moved element 'end'.
|
|
this.references[endIndex] = null;
|
|
|
|
return true;
|
|
}
|
|
-
|
|
public boolean add(final E obj) {
|
|
final int count = this.count;
|
|
final int currIndex = this.referenceToIndex.putIfAbsent(obj, count);
|