From 99bebe806c3bd50eaddd5e1ab006c299ce4c9cfb Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 18 Mar 2017 07:05:02 +0100 Subject: [PATCH] Refactor flattening lists example (#1372) --- .../flattennestedlist/FlattenNestedList.java | 17 ----- .../FlattenNestedListTest.java | 76 +++++++++++-------- 2 files changed, 44 insertions(+), 49 deletions(-) delete mode 100644 core-java/src/main/java/com/baeldung/list/flattennestedlist/FlattenNestedList.java diff --git a/core-java/src/main/java/com/baeldung/list/flattennestedlist/FlattenNestedList.java b/core-java/src/main/java/com/baeldung/list/flattennestedlist/FlattenNestedList.java deleted file mode 100644 index 11ee66560b..0000000000 --- a/core-java/src/main/java/com/baeldung/list/flattennestedlist/FlattenNestedList.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.list.flattennestedlist; - -import java.util.ArrayList; -import java.util.List; - -public class FlattenNestedList { - - public List flattenListOfLists(List> lol) { - - // flatten the list - List ls = new ArrayList<>(); - lol.forEach((k) -> ls.addAll(k)); - - return ls; - } - -} diff --git a/core-java/src/test/java/com/baeldung/list/flattennestedlist/FlattenNestedListTest.java b/core-java/src/test/java/com/baeldung/list/flattennestedlist/FlattenNestedListTest.java index 09bfdae9a5..cf9334954b 100644 --- a/core-java/src/test/java/com/baeldung/list/flattennestedlist/FlattenNestedListTest.java +++ b/core-java/src/test/java/com/baeldung/list/flattennestedlist/FlattenNestedListTest.java @@ -1,52 +1,64 @@ package com.baeldung.list.flattennestedlist; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.junit.Before; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class FlattenNestedListTest { - private static final Logger LOGGER = LoggerFactory.getLogger(FlattenNestedListTest.class); - private FlattenNestedList flol; - - @Before - public void setup() { - flol = new FlattenNestedList(); - } - @Test - public void givenListOfListOfString_flattenNestedList() { - - // create the list to flatten + public void givenListOfListOfString_flattenNestedList1() { + // given List ls1 = Arrays.asList("one:one", "one:two", "one:three"); List ls2 = Arrays.asList("two:one", "two:two", "two:three"); List ls3 = Arrays.asList("three:one", "three:two", "three:three"); - List> lol = new ArrayList<>(); - lol.addAll(Arrays.asList(ls1, ls2, ls3)); - - // show nested list - LOGGER.debug("\nNested list: "); - lol.forEach((nl) -> LOGGER.debug(nl + "")); + List> list = Arrays.asList(ls1, ls2, ls3); - // flatten it - List ls = flol.flattenListOfLists(lol); + // when + List ls = flattenListOfListsImperatively(list); + // then assertNotNull(ls); assertTrue(ls.size() == 9); - - // show flattened list - LOGGER.debug("\nFlattened list:"); - ls.forEach((l) -> LOGGER.debug(l)); + //TODO content assertion + } + @Test + public void givenListOfListOfString_flattenNestedList2() { + // given + List ls1 = Arrays.asList("one:one", "one:two", "one:three"); + List ls2 = Arrays.asList("two:one", "two:two", "two:three"); + List ls3 = Arrays.asList("three:one", "three:two", "three:three"); + + List> list = Arrays.asList(ls1, ls2, ls3); + + // when + List ls = flattenListOfListsStream(list); + + // then + assertNotNull(ls); + assertTrue(ls.size() == 9); + //TODO content assertion + } + + public List flattenListOfListsImperatively(List> list) { + List ls = new ArrayList<>(); + list.forEach(ls::addAll); + return ls; + } + + public List flattenListOfListsStream(List> list) { + return list.stream() + .flatMap(Collection::stream) + .collect(Collectors.toList()); } }