diff --git a/libraries/pom.xml b/libraries/pom.xml
index 87971fb26e..8f28a23d75 100644
--- a/libraries/pom.xml
+++ b/libraries/pom.xml
@@ -462,6 +462,11 @@
pcollections
${pcollections.version}
+
+ org.eclipse.collections
+ eclipse-collections
+ ${eclipse-collections.version}
+
0.7.0
@@ -503,5 +508,6 @@
1.7.1
2.1.2
1.0
+ 8.2.0
-
+
\ No newline at end of file
diff --git a/libraries/src/main/java/com/baeldung/eclipsecollections/ConvertContainerToAnother.java b/libraries/src/main/java/com/baeldung/eclipsecollections/ConvertContainerToAnother.java
new file mode 100644
index 0000000000..069baeab9f
--- /dev/null
+++ b/libraries/src/main/java/com/baeldung/eclipsecollections/ConvertContainerToAnother.java
@@ -0,0 +1,20 @@
+package com.baeldung.eclipsecollections;
+
+import java.util.List;
+
+import org.eclipse.collections.api.list.MutableList;
+import org.eclipse.collections.impl.set.mutable.UnifiedSet;
+
+public class ConvertContainerToAnother {
+
+ @SuppressWarnings("rawtypes")
+ public static List convertToList() {
+ UnifiedSet cars = new UnifiedSet<>();
+
+ cars.add("Toyota");
+ cars.add("Mercedes");
+ cars.add("Volkswagen");
+
+ return cars.toList();
+ }
+}
diff --git a/libraries/src/main/java/com/baeldung/eclipsecollections/Student.java b/libraries/src/main/java/com/baeldung/eclipsecollections/Student.java
new file mode 100644
index 0000000000..2c634a28d9
--- /dev/null
+++ b/libraries/src/main/java/com/baeldung/eclipsecollections/Student.java
@@ -0,0 +1,20 @@
+package com.baeldung.eclipsecollections;
+
+public class Student {
+
+ private String firstName;
+ private String lastName;
+
+ public Student(String firstName, String lastName) {
+ this.firstName = firstName;
+ this.lastName = lastName;
+ }
+
+ public String getFirstName() {
+ return this.firstName;
+ }
+
+ public String getLastName() {
+ return this.lastName;
+ }
+}
\ No newline at end of file
diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java
new file mode 100644
index 0000000000..1ea10317c7
--- /dev/null
+++ b/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java
@@ -0,0 +1,34 @@
+package com.baeldung.eclipsecollections;
+
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.collections.api.list.MutableList;
+import org.eclipse.collections.impl.block.factory.Predicates;
+import org.eclipse.collections.impl.list.mutable.FastList;
+import org.junit.Before;
+import org.junit.Test;
+
+public class AllSatisfyPatternTest {
+
+ MutableList list;
+
+ @Before
+ public void getList() {
+ this.list = new FastList<>();
+ list.add(1);
+ list.add(8);
+ list.add(5);
+ list.add(41);
+ list.add(31);
+ list.add(17);
+ list.add(23);
+ list.add(38);
+ }
+
+ @Test
+ public void whenAnySatisfiesCondition_thenCorrect() {
+ boolean result = list.allSatisfy(Predicates.greaterThan(0));
+
+ assertTrue(result);
+ }
+}
diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java
new file mode 100644
index 0000000000..58f8ad40af
--- /dev/null
+++ b/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java
@@ -0,0 +1,34 @@
+package com.baeldung.eclipsecollections;
+
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.collections.api.list.MutableList;
+import org.eclipse.collections.impl.block.factory.Predicates;
+import org.eclipse.collections.impl.list.mutable.FastList;
+import org.junit.Before;
+import org.junit.Test;
+
+public class AnySatisfyPatternTest {
+
+ MutableList list;
+
+ @Before
+ public void getList() {
+ this.list = new FastList<>();
+ list.add(1);
+ list.add(8);
+ list.add(5);
+ list.add(41);
+ list.add(31);
+ list.add(17);
+ list.add(23);
+ list.add(38);
+ }
+
+ @Test
+ public void whenAnySatisfiesCondition_thenCorrect() {
+ boolean result = list.anySatisfy(Predicates.greaterThan(30));
+
+ assertTrue(result);
+ }
+}
diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java
new file mode 100644
index 0000000000..51591cd08c
--- /dev/null
+++ b/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java
@@ -0,0 +1,22 @@
+package com.baeldung.eclipsecollections;
+
+import org.eclipse.collections.api.list.MutableList;
+import org.eclipse.collections.impl.list.mutable.FastList;
+import static org.junit.Assert.assertEquals;
+import org.junit.Test;
+
+public class CollectPatternTest {
+
+ @Test
+ public void whenCollect_thenCorrect() {
+ Student student1 = new Student("John", "Hopkins");
+ Student student2 = new Student("George", "Adams");
+
+ MutableList students = FastList.newListWith(student1, student2);
+
+ MutableList lastNames = students.collect(Student::getLastName);
+
+ assertEquals(lastNames.get(0), "Hopkins");
+ assertEquals(lastNames.get(1), "Adams");
+ }
+}
diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java
new file mode 100644
index 0000000000..b538abfa6e
--- /dev/null
+++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java
@@ -0,0 +1,20 @@
+package com.baeldung.eclipsecollections;
+
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.collections.api.list.MutableList;
+import org.eclipse.collections.impl.block.factory.Predicates;
+import org.junit.Test;
+
+public class ConvertContainerToAnotherTest {
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ @Test
+ public void whenConvertContainerToAnother_thenCorrect() {
+ MutableList cars = (MutableList) ConvertContainerToAnother.convertToList();
+
+ assertTrue(cars.anySatisfy(Predicates.equal("Toyota")));
+ assertTrue(cars.anySatisfy(Predicates.equal("Mercedes")));
+ assertTrue(cars.anySatisfy(Predicates.equal("Volkswagen")));
+ }
+}
diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java
new file mode 100644
index 0000000000..fc643f2840
--- /dev/null
+++ b/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java
@@ -0,0 +1,34 @@
+package com.baeldung.eclipsecollections;
+
+import org.eclipse.collections.api.list.MutableList;
+import org.eclipse.collections.impl.block.factory.Predicates;
+import org.eclipse.collections.impl.list.mutable.FastList;
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class DetectPatternTest {
+
+ MutableList list;
+
+ @Before
+ public void getList() {
+ this.list = new FastList<>();
+ list.add(1);
+ list.add(8);
+ list.add(5);
+ list.add(41);
+ list.add(31);
+ list.add(17);
+ list.add(23);
+ list.add(38);
+ }
+
+ @Test
+ public void whenDetect_thenCorrect() {
+ Integer result = list.detect(Predicates.greaterThan(30));
+
+ assertEquals((int) result, 41);
+ }
+}
diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java
new file mode 100644
index 0000000000..e8d93a2af6
--- /dev/null
+++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java
@@ -0,0 +1,32 @@
+package com.baeldung.eclipsecollections;
+
+import org.eclipse.collections.api.block.procedure.Procedure;
+import org.eclipse.collections.api.tuple.Pair;
+import org.eclipse.collections.impl.map.mutable.UnifiedMap;
+import org.eclipse.collections.impl.tuple.Tuples;
+import static org.junit.Assert.assertEquals;
+
+import java.util.Map;
+
+import org.junit.Test;
+
+public class ForEachPatternTest {
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void whenInstantiateAndChangeValues_thenCorrect() {
+ Pair pair1 = Tuples.pair(1, "One");
+ Pair pair2 = Tuples.pair(2, "Two");
+ Pair pair3 = Tuples.pair(3, "Three");
+
+ UnifiedMap map = UnifiedMap.newMapWith(pair1, pair2, pair3);
+
+ for (int i = 0; i < map.size(); i++) {
+ map.put(i + 1, "New Value");
+ }
+
+ for (int i = 0; i < map.size(); i++) {
+ assertEquals("New Value", map.get(i + 1));
+ }
+ }
+}
diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/InjectIntoPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/InjectIntoPatternTest.java
new file mode 100644
index 0000000000..bcd34021b1
--- /dev/null
+++ b/libraries/src/test/java/com/baeldung/eclipsecollections/InjectIntoPatternTest.java
@@ -0,0 +1,23 @@
+package com.baeldung.eclipsecollections;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+
+import org.eclipse.collections.impl.factory.Lists;
+import org.junit.Test;
+
+public class InjectIntoPatternTest {
+
+ @Test
+ public void whenInjectInto_thenCorrect() {
+ List list = Lists.mutable.of(1, 2, 3, 4);
+ int result = 5;
+ for (int i = 0; i < list.size(); i++) {
+ Integer v = list.get(i);
+ result = result + v.intValue();
+ }
+
+ assertEquals(15, result);
+ }
+}
diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java
new file mode 100644
index 0000000000..8fe1286d41
--- /dev/null
+++ b/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java
@@ -0,0 +1,26 @@
+package com.baeldung.eclipsecollections;
+
+import org.eclipse.collections.api.LazyIterable;
+import org.eclipse.collections.api.list.MutableList;
+import org.eclipse.collections.impl.block.factory.Predicates;
+import org.eclipse.collections.impl.factory.Lists;
+import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+
+public class LazyIterationTest {
+
+ @Test
+ public void whenLazyIteration_thenCorrect() {
+ Student student1 = new Student("John", "Hopkins");
+ Student student2 = new Student("George", "Adams");
+ Student student3 = new Student("Jennifer", "Rodriguez");
+
+ MutableList students = Lists.mutable.with(student1, student2, student3);
+ LazyIterable lazyStudents = students.asLazy();
+ LazyIterable lastNames = lazyStudents.collect(Student::getLastName);
+
+ assertTrue(lastNames.anySatisfy(Predicates.equal("Hopkins")));
+ assertTrue(lastNames.anySatisfy(Predicates.equal("Adams")));
+ assertTrue(lastNames.anySatisfy(Predicates.equal("Rodriguez")));
+ }
+}
diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java
new file mode 100644
index 0000000000..3e52829824
--- /dev/null
+++ b/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java
@@ -0,0 +1,61 @@
+package com.baeldung.eclipsecollections;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.collections.api.block.predicate.Predicate;
+import org.eclipse.collections.api.list.MutableList;
+import org.eclipse.collections.api.partition.list.PartitionMutableList;
+import org.eclipse.collections.impl.block.factory.Predicates;
+import org.eclipse.collections.impl.list.mutable.FastList;
+import org.junit.Before;
+import org.junit.Test;
+
+public class PartitionPatternTest {
+
+ MutableList list;
+
+ @Before
+ public void getList() {
+ this.list = new FastList<>();
+ list.add(1);
+ list.add(8);
+ list.add(5);
+ list.add(41);
+ list.add(31);
+ list.add(17);
+ list.add(23);
+ list.add(38);
+ }
+
+ @SuppressWarnings({ "unused" })
+ @Test
+ public void whenAnySatisfiesCondition_thenCorrect() {
+ MutableList numbers = list;
+ PartitionMutableList partitionedFolks = numbers.partition(new Predicate() {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1551138743683678406L;
+
+ public boolean accept(Integer each) {
+ return each > 30;
+ }
+ });
+ MutableList greaterThanThirty = partitionedFolks.getSelected()
+ .sortThis();
+ MutableList smallerThanThirty = partitionedFolks.getRejected()
+ .sortThis();
+
+ assertEquals(1, (int) smallerThanThirty.getFirst());
+ assertTrue(smallerThanThirty.anySatisfy(Predicates.equal(5)));
+ assertTrue(smallerThanThirty.anySatisfy(Predicates.equal(8)));
+ assertTrue(smallerThanThirty.anySatisfy(Predicates.equal(17)));
+ assertTrue(smallerThanThirty.anySatisfy(Predicates.equal(23)));
+
+ assertTrue(greaterThanThirty.anySatisfy(Predicates.equal(31)));
+ assertTrue(greaterThanThirty.anySatisfy(Predicates.equal(38)));
+ assertTrue(greaterThanThirty.anySatisfy(Predicates.equal(41)));
+ }
+}
diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java
new file mode 100644
index 0000000000..044a8203d6
--- /dev/null
+++ b/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java
@@ -0,0 +1,38 @@
+package com.baeldung.eclipsecollections;
+
+import org.eclipse.collections.api.list.MutableList;
+import org.eclipse.collections.impl.block.factory.Predicates;
+import org.eclipse.collections.impl.list.mutable.FastList;
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+
+public class RejectPatternTest {
+
+ MutableList list;
+
+ @Before
+ public void getList() {
+ this.list = new FastList<>();
+ list.add(1);
+ list.add(8);
+ list.add(5);
+ list.add(41);
+ list.add(31);
+ list.add(17);
+ list.add(23);
+ list.add(38);
+ }
+
+ @Test
+ public void whenReject_thenCorrect() {
+ MutableList notGreaterThanThirty = list.reject(Predicates.greaterThan(30))
+ .sortThis();
+
+ assertEquals(1, (int) notGreaterThanThirty.getFirst());
+ assertEquals(5, (int) notGreaterThanThirty.get(1));
+ assertEquals(8, (int) notGreaterThanThirty.get(2));
+ assertEquals(17, (int) notGreaterThanThirty.get(3));
+ assertEquals(23, (int) notGreaterThanThirty.getLast());
+ }
+}
diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java
new file mode 100644
index 0000000000..20c94f6028
--- /dev/null
+++ b/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java
@@ -0,0 +1,52 @@
+package com.baeldung.eclipsecollections;
+
+import org.eclipse.collections.api.list.MutableList;
+import org.eclipse.collections.impl.block.factory.Predicates;
+import org.eclipse.collections.impl.list.mutable.FastList;
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+
+public class SelectPatternTest {
+
+ MutableList list;
+
+ @Before
+ public void getList() {
+ this.list = new FastList<>();
+ list.add(1);
+ list.add(8);
+ list.add(5);
+ list.add(41);
+ list.add(31);
+ list.add(17);
+ list.add(23);
+ list.add(38);
+ }
+
+ @Test
+ public void givenListwhenSelect_thenCorrect() {
+ MutableList greaterThanThirty = list.select(Predicates.greaterThan(30))
+ .sortThis();
+
+ assertEquals(31, (int) greaterThanThirty.getFirst());
+ assertEquals(38, (int) greaterThanThirty.get(1));
+ assertEquals(41, (int) greaterThanThirty.getLast());
+ }
+
+ @SuppressWarnings("rawtypes")
+ public MutableList selectUsingLambda() {
+ return list.select(each -> each > 30)
+ .sortThis();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void givenListwhenSelectUsingLambda_thenCorrect() {
+ MutableList greaterThanThirty = selectUsingLambda();
+
+ assertEquals(31, (int) greaterThanThirty.getFirst());
+ assertEquals(38, (int) greaterThanThirty.get(1));
+ assertEquals(41, (int) greaterThanThirty.getLast());
+ }
+}