From 8e36168dc5f3a68917606a93fef5add281ac48c1 Mon Sep 17 00:00:00 2001
From: Evgeniy Kuvardin
Date: Fri, 17 Jan 2025 14:38:40 +0300
Subject: [PATCH 1/6] COLLECTIONS-873. Add PatriciaTrieSet
---
.../collections4/set/PatriciaTrieSet.java | 145 +++++++++++
.../commons/collections4/set/TrieSet.java | 26 ++
.../collections4/set/PatriciaTrieSetTest.java | 230 ++++++++++++++++++
3 files changed, 401 insertions(+)
create mode 100644 src/main/java/org/apache/commons/collections4/set/PatriciaTrieSet.java
create mode 100644 src/main/java/org/apache/commons/collections4/set/TrieSet.java
create mode 100644 src/test/java/org/apache/commons/collections4/set/PatriciaTrieSetTest.java
diff --git a/src/main/java/org/apache/commons/collections4/set/PatriciaTrieSet.java b/src/main/java/org/apache/commons/collections4/set/PatriciaTrieSet.java
new file mode 100644
index 0000000000..2f1d571c7e
--- /dev/null
+++ b/src/main/java/org/apache/commons/collections4/set/PatriciaTrieSet.java
@@ -0,0 +1,145 @@
+package org.apache.commons.collections4.set;
+
+import org.apache.commons.collections4.trie.PatriciaTrie;
+
+import java.io.IOException;
+import java.util.AbstractSet;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.io.Serializable;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+/**
+ * Add {@code Set} to work with PatriciaTree with unique key ignore corresponding values
+ *
+ * This set exists to provide interface to work with Set + PatriciaTree
+ *
+ *
+ * One usage would be to ensure that no null entries are added to the set.
+ *
+ * PatriciaTrieSet = new PatriciaTrieSet();
+ *
+ * This class is Serializable and Cloneable.
+ *
+ *
+ * @since 5.0
+ */
+public class PatriciaTrieSet extends AbstractSet implements TrieSet, Serializable {
+
+ private static final long serialVersionUID = -2365733183789787136L;
+
+ // Stub for all values in PatriciaTrie
+ static final Object PRESENT = new Object();
+ transient PatriciaTrie