mirror of
https://github.com/YatopiaMC/Yatopia.git
synced 2025-02-16 20:32:32 +01:00
Improve Producer#fillList
now it sorts if all the values in the list are comparables and avoids values which are null or contain in the list already.
This commit is contained in:
parent
322c7c08e1
commit
609364922c
@ -625,12 +625,13 @@ index 0000000000000000000000000000000000000000..508fe7cf5281cff7528b90e584c17e73
|
|||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/me/jellysquid/mods/lithium/common/util/Producer.java b/src/main/java/me/jellysquid/mods/lithium/common/util/Producer.java
|
diff --git a/src/main/java/me/jellysquid/mods/lithium/common/util/Producer.java b/src/main/java/me/jellysquid/mods/lithium/common/util/Producer.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..e6660fe1a552635e563103aa6fa078d422e6c0c7
|
index 0000000000000000000000000000000000000000..1ec2b7a9e0062ed4d45786167bd6c71b588da4d7
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/me/jellysquid/mods/lithium/common/util/Producer.java
|
+++ b/src/main/java/me/jellysquid/mods/lithium/common/util/Producer.java
|
||||||
@@ -0,0 +1,49 @@
|
@@ -0,0 +1,66 @@
|
||||||
+package me.jellysquid.mods.lithium.common.util;
|
+package me.jellysquid.mods.lithium.common.util;
|
||||||
+
|
+
|
||||||
|
+import java.util.Comparator;
|
||||||
+import java.util.List;
|
+import java.util.List;
|
||||||
+import java.util.Spliterator;
|
+import java.util.Spliterator;
|
||||||
+import java.util.Spliterators;
|
+import java.util.Spliterators;
|
||||||
@ -668,7 +669,23 @@ index 0000000000000000000000000000000000000000..e6660fe1a552635e563103aa6fa078d4
|
|||||||
+
|
+
|
||||||
+ static <T> void fillList(Producer<T> producer, List<T> list) {
|
+ static <T> void fillList(Producer<T> producer, List<T> list) {
|
||||||
+ HoldingConsumer<T> consumer = new HoldingConsumer<>();
|
+ HoldingConsumer<T> consumer = new HoldingConsumer<>();
|
||||||
+ while (producer.computeNext(consumer)) list.add(consumer.getValue());
|
+ while (producer.computeNext(consumer)) {
|
||||||
|
+ T value = consumer.getValue();
|
||||||
|
+ if (value == null || list.contains(value)) { continue; }
|
||||||
|
+ list.add(value);
|
||||||
|
+ }
|
||||||
|
+ if (!list.isEmpty()) {
|
||||||
|
+ boolean allComparable = true;
|
||||||
|
+ for (T value : list) {
|
||||||
|
+ if (!(value instanceof Comparable)) {
|
||||||
|
+ allComparable = false;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ if (allComparable) {
|
||||||
|
+ list.sort((o1, o2) -> ((Comparable<T>)o1).compareTo(o2));
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ Producer<?> EMPTY_PRODUCER = consumer -> false;
|
+ Producer<?> EMPTY_PRODUCER = consumer -> false;
|
||||||
|
Loading…
Reference in New Issue
Block a user