From 51f3a8fe5e3e297ca91c47b82f877ad8e02a127a Mon Sep 17 00:00:00 2001 From: Ekaterina Galkina Date: Wed, 18 Jul 2018 19:57:05 +0500 Subject: [PATCH 1/3] BAEL-2018 --- .../com/baeldung/convertlisttomap/Animal.java | 28 ++++++++ .../convertlisttomap/ConvertListService.java | 68 +++++++++++++++++++ .../ConvertListServiceUnitTest.java | 68 +++++++++++++++++++ 3 files changed, 164 insertions(+) create mode 100644 core-java-8/src/main/java/com/baeldung/convertlisttomap/Animal.java create mode 100644 core-java-8/src/main/java/com/baeldung/convertlisttomap/ConvertListService.java create mode 100644 core-java-8/src/test/java/com/baeldung/convertlisttomap/ConvertListServiceUnitTest.java diff --git a/core-java-8/src/main/java/com/baeldung/convertlisttomap/Animal.java b/core-java-8/src/main/java/com/baeldung/convertlisttomap/Animal.java new file mode 100644 index 000000000000..49bc0dfc75c6 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/convertlisttomap/Animal.java @@ -0,0 +1,28 @@ +package com.baeldung.convertlisttomap; + +public class Animal { + private int id; + private String name; + + public Animal(int id, String name) { + this.id = id; + this.setName(name); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/core-java-8/src/main/java/com/baeldung/convertlisttomap/ConvertListService.java b/core-java-8/src/main/java/com/baeldung/convertlisttomap/ConvertListService.java new file mode 100644 index 000000000000..cd7d521107fb --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/convertlisttomap/ConvertListService.java @@ -0,0 +1,68 @@ +package com.baeldung.convertlisttomap; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.apache.commons.collections4.Closure; +import org.apache.commons.collections4.IterableUtils; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.collections4.Transformer; + +import com.google.common.base.Function; +import com.google.common.collect.Maps; + +public class ConvertListService { + + public Map convertListBeforeJava8(List list) { + Map map = new HashMap(); + for (Animal animal : list) + map.put(animal.getId(), animal); + return map; + } + + public Map convertListAfterJava8(List list) { + Map map = list.stream().collect(Collectors.toMap(Animal::getId, animal -> animal)); + return map; + } + + public Map convertListWithGuava(List list) { + Map map = Maps.uniqueIndex(list, new Function() { + public Integer apply(Animal animal) { + return animal.getId(); + } + }); + return map; + } + + public Map convertListWithApacheCommons1(List list) { + + Map map = new HashMap(); + + IterableUtils.forEach(list, new Closure() { + @Override + public void execute(Object o) { + Animal animal = (Animal) o; + map.put(animal.getId(), animal); + } + }); + + return map; + } + + public Map convertListWithApacheCommons2(List list) { + + Map map = new HashMap(); + + MapUtils.populateMap(map, list, new Transformer() { + + @Override + public Integer transform(Animal input) { + return input.getId(); + } + }); + + return map; + } +} diff --git a/core-java-8/src/test/java/com/baeldung/convertlisttomap/ConvertListServiceUnitTest.java b/core-java-8/src/test/java/com/baeldung/convertlisttomap/ConvertListServiceUnitTest.java new file mode 100644 index 000000000000..7017b7f625eb --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/convertlisttomap/ConvertListServiceUnitTest.java @@ -0,0 +1,68 @@ +package com.baeldung.convertlisttomap; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.junit.Before; +import org.junit.Test; + +public class ConvertListServiceUnitTest { + List list; + + private ConvertListService convertListService; + + @Before + public void init() { + this.convertListService = new ConvertListService(); + this.list = new ArrayList<>(); + + Animal cat = new Animal(1, "Cat"); + list.add(cat); + Animal dog = new Animal(2, "Dog"); + list.add(dog); + Animal pig = new Animal(3, "Pig"); + list.add(pig); + Animal cow = new Animal(4, "Cow"); + list.add(cow); + Animal goat = new Animal(5, "Goat"); + list.add(goat); + } + + @Test + public void givenAList_whenConvertBeforeJava8_thenReturnMapWithTheSameElements() { + + Map map = convertListService.convertListBeforeJava8(list); + assertThat(map.values(), containsInAnyOrder(list.toArray())); + } + + @Test + public void givenAList_whenConvertAfterJava8_thenReturnMapWithTheSameElements() { + + Map map = convertListService.convertListAfterJava8(list); + assertThat(map.values(), containsInAnyOrder(list.toArray())); + } + + @Test + public void givenAList_whenConvertWithGuava_thenReturnMapWithTheSameElements() { + + Map map = convertListService.convertListWithGuava(list); + assertThat(map.values(), containsInAnyOrder(list.toArray())); + } + + @Test + public void givenAList_whenConvertWithApacheCommons1_thenReturnMapWithTheSameElements() { + + Map map = convertListService.convertListWithApacheCommons1(list); + assertThat(map.values(), containsInAnyOrder(list.toArray())); + } + + @Test + public void givenAList_whenConvertWithApacheCommons2_thenReturnMapWithTheSameElements() { + + Map map = convertListService.convertListWithApacheCommons2(list); + assertThat(map.values(), containsInAnyOrder(list.toArray())); + } +} From e0e8c0226f604e6d7b944031893617d8a61490c7 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Wed, 18 Jul 2018 20:54:26 +0300 Subject: [PATCH 2/3] Update Animal.java --- .../src/main/java/com/baeldung/convertlisttomap/Animal.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core-java-8/src/main/java/com/baeldung/convertlisttomap/Animal.java b/core-java-8/src/main/java/com/baeldung/convertlisttomap/Animal.java index 49bc0dfc75c6..b8eddf71a5de 100644 --- a/core-java-8/src/main/java/com/baeldung/convertlisttomap/Animal.java +++ b/core-java-8/src/main/java/com/baeldung/convertlisttomap/Animal.java @@ -24,5 +24,4 @@ public String getName() { public void setName(String name) { this.name = name; } - } From ed78c808d575cc955544e0c08741dbb155f03105 Mon Sep 17 00:00:00 2001 From: Ekaterina Galkina Date: Thu, 19 Jul 2018 15:56:22 +0500 Subject: [PATCH 3/3] rename --- ...vice.java => ConvertListToMapService.java} | 32 +++++-------------- ...a => ConvertListToMapServiceUnitTest.java} | 11 +++++-- 2 files changed, 16 insertions(+), 27 deletions(-) rename core-java-8/src/main/java/com/baeldung/convertlisttomap/{ConvertListService.java => ConvertListToMapService.java} (58%) rename core-java-8/src/test/java/com/baeldung/convertlisttomap/{ConvertListServiceUnitTest.java => ConvertListToMapServiceUnitTest.java} (92%) diff --git a/core-java-8/src/main/java/com/baeldung/convertlisttomap/ConvertListService.java b/core-java-8/src/main/java/com/baeldung/convertlisttomap/ConvertListToMapService.java similarity index 58% rename from core-java-8/src/main/java/com/baeldung/convertlisttomap/ConvertListService.java rename to core-java-8/src/main/java/com/baeldung/convertlisttomap/ConvertListToMapService.java index cd7d521107fb..679e753c5642 100644 --- a/core-java-8/src/main/java/com/baeldung/convertlisttomap/ConvertListService.java +++ b/core-java-8/src/main/java/com/baeldung/convertlisttomap/ConvertListToMapService.java @@ -5,20 +5,17 @@ import java.util.Map; import java.util.stream.Collectors; -import org.apache.commons.collections4.Closure; import org.apache.commons.collections4.IterableUtils; import org.apache.commons.collections4.MapUtils; -import org.apache.commons.collections4.Transformer; - -import com.google.common.base.Function; import com.google.common.collect.Maps; -public class ConvertListService { +public class ConvertListToMapService { public Map convertListBeforeJava8(List list) { Map map = new HashMap(); - for (Animal animal : list) + for (Animal animal : list) { map.put(animal.getId(), animal); + } return map; } @@ -28,11 +25,8 @@ public Map convertListAfterJava8(List list) { } public Map convertListWithGuava(List list) { - Map map = Maps.uniqueIndex(list, new Function() { - public Integer apply(Animal animal) { - return animal.getId(); - } - }); + + Map map = Maps.uniqueIndex(list, Animal::getId); return map; } @@ -40,12 +34,8 @@ public Map convertListWithApacheCommons1(List list) { Map map = new HashMap(); - IterableUtils.forEach(list, new Closure() { - @Override - public void execute(Object o) { - Animal animal = (Animal) o; - map.put(animal.getId(), animal); - } + IterableUtils.forEach(list, animal -> { + map.put(animal.getId(), animal); }); return map; @@ -55,13 +45,7 @@ public Map convertListWithApacheCommons2(List list) { Map map = new HashMap(); - MapUtils.populateMap(map, list, new Transformer() { - - @Override - public Integer transform(Animal input) { - return input.getId(); - } - }); + MapUtils.populateMap(map, list, Animal::getId); return map; } diff --git a/core-java-8/src/test/java/com/baeldung/convertlisttomap/ConvertListServiceUnitTest.java b/core-java-8/src/test/java/com/baeldung/convertlisttomap/ConvertListToMapServiceUnitTest.java similarity index 92% rename from core-java-8/src/test/java/com/baeldung/convertlisttomap/ConvertListServiceUnitTest.java rename to core-java-8/src/test/java/com/baeldung/convertlisttomap/ConvertListToMapServiceUnitTest.java index 7017b7f625eb..4e78af08cd09 100644 --- a/core-java-8/src/test/java/com/baeldung/convertlisttomap/ConvertListServiceUnitTest.java +++ b/core-java-8/src/test/java/com/baeldung/convertlisttomap/ConvertListToMapServiceUnitTest.java @@ -9,14 +9,14 @@ import org.junit.Before; import org.junit.Test; -public class ConvertListServiceUnitTest { +public class ConvertListToMapServiceUnitTest { List list; - private ConvertListService convertListService; + private ConvertListToMapService convertListService; @Before public void init() { - this.convertListService = new ConvertListService(); + this.convertListService = new ConvertListToMapService(); this.list = new ArrayList<>(); Animal cat = new Animal(1, "Cat"); @@ -35,6 +35,7 @@ public void init() { public void givenAList_whenConvertBeforeJava8_thenReturnMapWithTheSameElements() { Map map = convertListService.convertListBeforeJava8(list); + assertThat(map.values(), containsInAnyOrder(list.toArray())); } @@ -42,6 +43,7 @@ public void givenAList_whenConvertBeforeJava8_thenReturnMapWithTheSameElements() public void givenAList_whenConvertAfterJava8_thenReturnMapWithTheSameElements() { Map map = convertListService.convertListAfterJava8(list); + assertThat(map.values(), containsInAnyOrder(list.toArray())); } @@ -49,6 +51,7 @@ public void givenAList_whenConvertAfterJava8_thenReturnMapWithTheSameElements() public void givenAList_whenConvertWithGuava_thenReturnMapWithTheSameElements() { Map map = convertListService.convertListWithGuava(list); + assertThat(map.values(), containsInAnyOrder(list.toArray())); } @@ -56,6 +59,7 @@ public void givenAList_whenConvertWithGuava_thenReturnMapWithTheSameElements() { public void givenAList_whenConvertWithApacheCommons1_thenReturnMapWithTheSameElements() { Map map = convertListService.convertListWithApacheCommons1(list); + assertThat(map.values(), containsInAnyOrder(list.toArray())); } @@ -63,6 +67,7 @@ public void givenAList_whenConvertWithApacheCommons1_thenReturnMapWithTheSameEle public void givenAList_whenConvertWithApacheCommons2_thenReturnMapWithTheSameElements() { Map map = convertListService.convertListWithApacheCommons2(list); + assertThat(map.values(), containsInAnyOrder(list.toArray())); } }