From cc089e52974a80cb539176cc19922092e986c765 Mon Sep 17 00:00:00 2001 From: Mohd Farid Date: Wed, 15 Feb 2017 12:06:04 +0530 Subject: [PATCH] BAEL-668 find min/max from a list/collection (#1134) * BAEL-668 find min/max from a list/collection * BAEL-668 using mapToInt instead of Compare * BAEL-668 using direct assertion with the method call --- .../com/baeldung/java_8_features/Person.java | 27 ++++++++++++++ .../com/baeldung/java8/Java8MaxMinTest.java | 37 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/java_8_features/Person.java create mode 100644 core-java/src/test/java/com/baeldung/java8/Java8MaxMinTest.java diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Person.java b/core-java/src/main/java/com/baeldung/java_8_features/Person.java new file mode 100644 index 0000000000..83b5530ee8 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java_8_features/Person.java @@ -0,0 +1,27 @@ +package com.baeldung.java_8_features; + +public class Person { + private String name; + private Integer age; + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } +} diff --git a/core-java/src/test/java/com/baeldung/java8/Java8MaxMinTest.java b/core-java/src/test/java/com/baeldung/java8/Java8MaxMinTest.java new file mode 100644 index 0000000000..0e361d96e1 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8MaxMinTest.java @@ -0,0 +1,37 @@ +package com.baeldung.java8; + +import com.baeldung.java_8_features.Person; +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +public class Java8MaxMinTest { + + @Test + public void whenListIsOfIntegerThenMaxCanBeDoneUsingIntegerComparator() { + //given + final List listOfIntegers = Arrays.asList(1, 2, 3, 4, 56, 7, 89, 10); + final Integer expectedResult = 89; + + //then + assertEquals(expectedResult, + (Integer) listOfIntegers.stream().mapToInt(val -> val).max().getAsInt()); + } + + @Test + public void whenListIsOfPersonObjectThenMinCanBeDoneUsingCustomComparatorThroughLambda() { + //given + final Person alex = new Person("Alex", 23); + final Person john = new Person("John", 40); + final Person peter = new Person("Peter", 32); + final List people = Arrays.asList(alex, john, peter); + + //then + assertEquals("Alex must be having min age", alex, + people.stream().min((o1, o2) -> o1.getAge().compareTo(o2.getAge())).get()); + } + +}