diff --git a/core-java-modules/core-java-collections-list-7/src/main/java/com/baeldung/linkedlistarray/LinkedListArray.java b/core-java-modules/core-java-collections-list-7/src/main/java/com/baeldung/linkedlistarray/LinkedListArray.java new file mode 100644 index 000000000000..f90f9b579cbb --- /dev/null +++ b/core-java-modules/core-java-collections-list-7/src/main/java/com/baeldung/linkedlistarray/LinkedListArray.java @@ -0,0 +1,89 @@ +package com.baeldung.linkedlistarray; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class LinkedListArray { + + public static LinkedList[] groupNumbersUsingRawArray(int[] numbers) { + @SuppressWarnings("unchecked") LinkedList[] groupListArray = new LinkedList[3]; + + for (int i = 0; i < groupListArray.length; i++) { + groupListArray[i] = new LinkedList<>(); + } + + for (int num : numbers) { + if (num < 10) { + groupListArray[0].add(num); + } else if (num < 20) { + groupListArray[1].add(num); + } else { + groupListArray[2].add(num); + } + } + return groupListArray; + } + + public static List> groupNumbersUsingListOfLinkedList(int[] numbers) { + List> groupListArray = new ArrayList<>(); + + for (int i = 0; i < 3; i++) { + groupListArray.add(new LinkedList<>()); + } + + for (int num : numbers) { + if (num < 10) { + groupListArray.get(0) + .add(num); + } else if (num < 20) { + groupListArray.get(1) + .add(num); + } else { + groupListArray.get(2) + .add(num); + } + } + return groupListArray; + } + + public static List> groupNumbersUsingStreams(int[] numbers) { + List> groupListArray = IntStream.range(0, 3) + .mapToObj(i -> new LinkedList()) + .collect(Collectors.toList()); + + for (int num : numbers) { + if (num < 10) { + groupListArray.get(0) + .add(num); + } else if (num < 20) { + groupListArray.get(1) + .add(num); + } else { + groupListArray.get(2) + .add(num); + } + } + return groupListArray; + } + + public static LinkedList[] groupNumbersUsingSetAll(int[] numbers) { + @SuppressWarnings("unchecked") LinkedList[] groupListArray = new LinkedList[3]; + Arrays.setAll(groupListArray, i -> new LinkedList<>()); + + for (int num : numbers) { + if (num < 10) { + groupListArray[0].add(num); + } else if (num < 20) { + groupListArray[1].add(num); + } else { + groupListArray[2].add(num); + } + } + return groupListArray; + } +} + diff --git a/core-java-modules/core-java-collections-list-7/src/test/java/com/baeldung/linkedlistarray/LinkedListArrayUnitTest.java b/core-java-modules/core-java-collections-list-7/src/test/java/com/baeldung/linkedlistarray/LinkedListArrayUnitTest.java new file mode 100644 index 000000000000..138e544b676d --- /dev/null +++ b/core-java-modules/core-java-collections-list-7/src/test/java/com/baeldung/linkedlistarray/LinkedListArrayUnitTest.java @@ -0,0 +1,58 @@ +package com.baeldung.linkedlistarray; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.LinkedList; +import java.util.List; + +import org.junit.jupiter.api.Test; + +public class LinkedListArrayUnitTest { + + @Test + void givenNumbers_whenGroupedUsingRawArray_thenGroupsAreCorrect() { + int[] input = { 3, 11, 21, 9, 19, 22 }; + LinkedList[] arrayOfLists = LinkedListArray.groupNumbersUsingRawArray(input); + + assertEquals(2, arrayOfLists[0].size()); + assertTrue(arrayOfLists[0].contains(3)); + assertTrue(arrayOfLists[0].contains(9)); + } + + @Test + void givenNumbers_whenGroupedUsingLinkedList_thenGroupsAreCorrect() { + int[] input = { 3, 11, 21, 9, 19, 22 }; + List> arrayOfLists = LinkedListArray.groupNumbersUsingListOfLinkedList(input); + + assertEquals(2, arrayOfLists.get(1) + .size()); + assertTrue(arrayOfLists.get(1) + .contains(11)); + assertTrue(arrayOfLists.get(1) + .contains(19)); + } + + @Test + void givenNumbers_whenGroupedUsingStreams_thenGroupsAreCorrect() { + int[] input = { 3, 11, 21, 9, 19, 22 }; + List> arrayOfLists = LinkedListArray.groupNumbersUsingStreams(input); + + assertEquals(2, arrayOfLists.get(0) + .size()); + assertTrue(arrayOfLists.get(0) + .contains(3)); + assertTrue(arrayOfLists.get(0) + .contains(9)); + } + + @Test + void givenNumbers_whenGroupedUsingSetAll_thenGroupsAreCorrect() { + int[] input = { 3, 11, 21, 9, 19, 22 }; + LinkedList[] arrayOfLists = LinkedListArray.groupNumbersUsingSetAll(input); + + assertEquals(2, arrayOfLists[2].size()); + assertTrue(arrayOfLists[2].contains(21)); + assertTrue(arrayOfLists[2].contains(22)); + } +}