diff --git a/core-java-modules/core-java-collections-list-4/pom.xml b/core-java-modules/core-java-collections-list-4/pom.xml
index ef815b790d..ab4ba37568 100644
--- a/core-java-modules/core-java-collections-list-4/pom.xml
+++ b/core-java-modules/core-java-collections-list-4/pom.xml
@@ -64,6 +64,23 @@
1.2.0
3.0
3.22.0
+ 17
+ 17
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+
+ ${maven.compiler.target.version}
+
+
+
+
-
\ No newline at end of file
+
diff --git a/core-java-modules/core-java-collections-list-4/src/test/java/com/baeldung/list/creation/ArraysAsListUnitTest.java b/core-java-modules/core-java-collections-list-4/src/test/java/com/baeldung/list/creation/ArraysAsListUnitTest.java
new file mode 100644
index 0000000000..732dd6a35a
--- /dev/null
+++ b/core-java-modules/core-java-collections-list-4/src/test/java/com/baeldung/list/creation/ArraysAsListUnitTest.java
@@ -0,0 +1,56 @@
+package com.baeldung.list.creation;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+class ArraysAsListUnitTest {
+
+ @Test
+ void givenAnArrayOfIntegersWhenCreatingAListUsingArraysAsListThenItWillHaveTheSameElementsInTheSameOrder() {
+ Integer[] array = new Integer[]{1, 2, 3, 4};
+ List list = Arrays.asList(array);
+ assertThat(list).containsExactly(1, 2, 3, 4);
+ }
+
+ @Test
+ void givenAnListOfIntegersCreatedUsingArraysAsListWhenChangingTheOriginalArrayTheReturnListWillAlsoChange() {
+ Integer[] array = new Integer[]{1, 2, 3};
+ List list = Arrays.asList(array);
+ array[0] = 1000;
+ assertThat(list.get(0)).isEqualTo(1000);
+ }
+
+ @Test
+ void givenAnListOfIntegersCreatedUsingArraysAsListWhenChangingTheReturnedListTheOriginalArrayWillAlsoChange() {
+ Integer[] array = new Integer[]{1, 2, 3};
+ List list = Arrays.asList(array);
+ list.set(0, 1000);
+ assertThat(array[0]).isEqualTo(1000);
+ }
+
+ @Test
+ void givenAnArrayOfIntegersCreatedUsingArraysAsListWhenModifyingAnExistingElementThenModifyIt() {
+ List list = Arrays.asList(1, 2, 3, 4);
+ list.set(1, 1000);
+ assertThat(list.get(1)).isEqualTo(1000);
+ }
+
+ @Test
+ void givenAnArrayCreatedWithArraysAsListWhenAddingANewElementThenUnsupportedOperationExceptionIsThrown() {
+ List list = Arrays.asList(1, 2, 3, 4, 5);
+ assertThrows(UnsupportedOperationException.class, () -> list.add(6));
+ }
+
+ @Test
+ void givenAnArrayCreatedWithArraysAsListWhenRemovingAnExistingElementThenUnsupportedOperationExceptionIsThrown() {
+ List list = Arrays.asList(1, 2, 3, 4, 5);
+ assertThrows(UnsupportedOperationException.class, () -> list.remove(1));
+ }
+
+
+}
diff --git a/core-java-modules/core-java-collections-list-4/src/test/java/com/baeldung/list/creation/ListOfUnitTest.java b/core-java-modules/core-java-collections-list-4/src/test/java/com/baeldung/list/creation/ListOfUnitTest.java
new file mode 100644
index 0000000000..5fe65e965f
--- /dev/null
+++ b/core-java-modules/core-java-collections-list-4/src/test/java/com/baeldung/list/creation/ListOfUnitTest.java
@@ -0,0 +1,51 @@
+package com.baeldung.list.creation;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+class ListOfUnitTest {
+
+ @Test
+ void givenAnArrayOfStringWhenCreatingAListUsingItsValuesThenItWillHaveTheSameElementsInTheSameOrder() {
+ String[] array = new String[]{"one", "two", "three"};
+ List list = List.of(array);
+ assertThat(list).containsExactly("one", "two", "three");
+ }
+
+ @Test
+ void givenAnListOfStringCreatedUsingListOfWhenChangingTheOriginalArrayTheReturnListWontChange() {
+ String[] array = new String[]{"one", "two", "three"};
+ List list = List.of(array);
+ array[0] = "thousand";
+ assertThat(list.get(0)).isEqualTo("one");
+ }
+
+ @Test
+ void givenAnArrayCreatedWithListOfWhenAddingANewElementThenUnsupportedOperationExceptionIsThrown() {
+ List list = List.of("one", "two", "three");
+ assertThrows(UnsupportedOperationException.class, () -> list.add("four"));
+ }
+
+ @Test
+ void givenAnArrayCreatedWithListOfWhenRemovingAnExistingElementThenUnsupportedOperationExceptionIsThrown() {
+ List list = List.of("one", "two", "three");
+ assertThrows(UnsupportedOperationException.class, () -> list.remove("two"));
+ }
+
+ @Test
+ void givenAnArrayCreatedWithListOfWhenModifyingAnExistingElementThenUnsupportedOperationExceptionIsThrown() {
+ List list = List.of("one", "two", "three");
+ assertThrows(UnsupportedOperationException.class, () -> list.set(1, "four"));
+ }
+
+ @Test
+ void givenAnArrayContainingNullElementWhenUsingItToCreateListThenNullPointerExceptionIsThrown() {
+ assertThrows(NullPointerException.class, () -> List.of("one", null, "two"));
+ }
+
+
+}
diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml
index 981374a4ef..22a7fdec1e 100644
--- a/core-java-modules/pom.xml
+++ b/core-java-modules/pom.xml
@@ -37,7 +37,6 @@
core-java-collections-list
core-java-collections-list-2
core-java-collections-list-3
- core-java-collections-list-4
core-java-collections-maps
core-java-collections-maps-2
core-java-collections-maps-3
diff --git a/pom.xml b/pom.xml
index 5cf2a2907d..b8a73ad0a0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1161,6 +1161,7 @@
core-java-modules/core-java-collections-set
+ core-java-modules/core-java-collections-list-4
core-java-modules/core-java-collections-maps-4
core-java-modules/core-java-date-operations-1
core-java-modules/core-java-datetime-conversion
@@ -1234,6 +1235,7 @@
core-java-modules/core-java-collections-set
+ core-java-modules/core-java-collections-list-4
core-java-modules/core-java-collections-maps-4
core-java-modules/core-java-date-operations-1
core-java-modules/core-java-datetime-conversion