diff --git a/core-java-modules/core-java-collections-set-2/pom.xml b/core-java-modules/core-java-collections-set-2/pom.xml
index d1a108f8bb..7274f1861b 100644
--- a/core-java-modules/core-java-collections-set-2/pom.xml
+++ b/core-java-modules/core-java-collections-set-2/pom.xml
@@ -20,6 +20,12 @@
${junit-platform.version}
test
+
+ org.apache.commons
+ commons-collections4
+ 4.4
+
+
org.testng
testng
diff --git a/core-java-modules/core-java-collections-set-2/src/main/java/com/baeldung/indexawareset/IndexOfElementsInSet.java b/core-java-modules/core-java-collections-set-2/src/main/java/com/baeldung/indexawareset/IndexOfElementsInSet.java
new file mode 100644
index 0000000000..736c5c91e4
--- /dev/null
+++ b/core-java-modules/core-java-collections-set-2/src/main/java/com/baeldung/indexawareset/IndexOfElementsInSet.java
@@ -0,0 +1,13 @@
+package com.baeldung.indexawareset;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+public class IndexOfElementsInSet {
+ public int getIndexOf(Set set, E element) {
+ List arrayList = new ArrayList<>();
+ arrayList.addAll(set);
+ return arrayList.indexOf(element);
+ }
+}
diff --git a/core-java-modules/core-java-collections-set-2/src/main/java/com/baeldung/indexawareset/InsertionIndexAwareSet.java b/core-java-modules/core-java-collections-set-2/src/main/java/com/baeldung/indexawareset/InsertionIndexAwareSet.java
new file mode 100644
index 0000000000..de2a739186
--- /dev/null
+++ b/core-java-modules/core-java-collections-set-2/src/main/java/com/baeldung/indexawareset/InsertionIndexAwareSet.java
@@ -0,0 +1,20 @@
+package com.baeldung.indexawareset;
+
+import java.util.LinkedHashSet;
+
+public class InsertionIndexAwareSet extends LinkedHashSet {
+ public InsertionIndexAwareSet() {
+ super();
+ }
+
+ public int getIndexOf(E element) {
+ int index = 0;
+ for (E current : this) {
+ if (current.equals(element)) {
+ return index;
+ }
+ index++;
+ }
+ return -1;
+ }
+}
diff --git a/core-java-modules/core-java-collections-set-2/src/test/java/com/baeldung/indexawareset/IndexOfSetElementsUsingListUnitTest.java b/core-java-modules/core-java-collections-set-2/src/test/java/com/baeldung/indexawareset/IndexOfSetElementsUsingListUnitTest.java
new file mode 100644
index 0000000000..6382db5aee
--- /dev/null
+++ b/core-java-modules/core-java-collections-set-2/src/test/java/com/baeldung/indexawareset/IndexOfSetElementsUsingListUnitTest.java
@@ -0,0 +1,93 @@
+package com.baeldung.indexawareset;
+
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.apache.commons.collections4.set.ListOrderedSet;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class IndexOfSetElementsUsingListUnitTest {
+ @Test
+ public void givenHashSet_whenIndexOfElement_thenGivesIndex() {
+ Set set = new HashSet<>();
+ set.add(100);
+ set.add(20);
+ set.add(300);
+ set.add(0);
+ set.add(-1);
+ set.add(300);
+
+ IndexOfElementsInSet integerIndexOfElementsInSet = new IndexOfElementsInSet<>();
+ int index100 = integerIndexOfElementsInSet.getIndexOf(set, 100);
+ Assert.assertEquals(index100, integerIndexOfElementsInSet.getIndexOf(set, 100));
+ Assert.assertEquals(-1, integerIndexOfElementsInSet.getIndexOf(set, 12));
+ }
+
+ @Test
+ public void givenLinkedHashSet_whenIndexOfElement_thenGivesIndex() {
+ Set set = new LinkedHashSet<>();
+ set.add(100);
+ set.add(20);
+ set.add(300);
+ set.add(0);
+ set.add(-1);
+ set.add(300);
+
+ IndexOfElementsInSet integerIndexOfElementsInSet = new IndexOfElementsInSet<>();
+ Assert.assertEquals(0, integerIndexOfElementsInSet.getIndexOf(set, 100));
+ }
+
+ @Test
+ public void givenTreeSet_whenIndexOfElement_thenGivesIndex() {
+ Set set = new TreeSet<>();
+ set.add(100);
+ set.add(20);
+ set.add(300);
+ set.add(0);
+ set.add(-1);
+ set.add(300);
+
+ IndexOfElementsInSet integerIndexOfElementsInSet = new IndexOfElementsInSet<>();
+ Assert.assertEquals(0, integerIndexOfElementsInSet.getIndexOf(set, -1));
+ Assert.assertEquals(3, integerIndexOfElementsInSet.getIndexOf(set, 100));
+ }
+
+ @Test
+ public void givenIndexAwareSet_whenIndexOfElement_thenGivesIndex() {
+ InsertionIndexAwareSet set = new InsertionIndexAwareSet<>();
+ set.add(100);
+ set.add(20);
+ set.add(300);
+ Assert.assertEquals(0, set.getIndexOf(100));
+ Assert.assertEquals(2, set.getIndexOf(300));
+ Assert.assertEquals(-1, set.getIndexOf(0));
+ }
+
+ @Test
+ public void givenIndexAwareSetWithStrings_whenIndexOfElement_thenGivesIndex() {
+ InsertionIndexAwareSet set = new InsertionIndexAwareSet<>();
+ set.add("Go");
+ set.add("Java");
+ set.add("Scala");
+ set.add("Python");
+ Assert.assertEquals(0, set.getIndexOf("Go"));
+ Assert.assertEquals(2, set.getIndexOf("Scala"));
+ Assert.assertEquals(-1, set.getIndexOf("C++"));
+ }
+
+ @Test
+ public void givenListOrderedSet_whenIndexOfElement_thenGivesIndex() {
+ ListOrderedSet set = new ListOrderedSet<>();
+ set.add(12);
+ set.add(0);
+ set.add(-1);
+ set.add(50);
+
+ Assert.assertEquals(0, set.indexOf(12));
+ Assert.assertEquals(2, set.indexOf(-1));
+ Assert.assertEquals(-1, set.indexOf(100));
+ }
+}