commit
						a34d4f0171
					
				
							
								
								
									
										48
									
								
								core-java-12/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								core-java-12/pom.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,48 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project xmlns="http://maven.apache.org/POM/4.0.0" | ||||||
|  | 		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  | 		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||||
|  | 	<modelVersion>4.0.0</modelVersion> | ||||||
|  | 	<groupId>com.baeldung</groupId> | ||||||
|  | 	<artifactId>core-java-12</artifactId> | ||||||
|  | 	<version>0.1.0-SNAPSHOT</version> | ||||||
|  | 	<name>core-java-12</name> | ||||||
|  | 	<packaging>jar</packaging> | ||||||
|  | 	<url>http://maven.apache.org</url> | ||||||
|  | 
 | ||||||
|  | 	<parent> | ||||||
|  | 		<groupId>com.baeldung</groupId> | ||||||
|  | 		<artifactId>parent-modules</artifactId> | ||||||
|  | 		<version>1.0.0-SNAPSHOT</version> | ||||||
|  | 	</parent> | ||||||
|  | 
 | ||||||
|  | 	<dependencies> | ||||||
|  | 		<dependency> | ||||||
|  | 			<groupId>org.assertj</groupId> | ||||||
|  | 			<artifactId>assertj-core</artifactId> | ||||||
|  | 			<version>${assertj.version}</version> | ||||||
|  | 			<scope>test</scope> | ||||||
|  | 		</dependency> | ||||||
|  | 	</dependencies> | ||||||
|  | 
 | ||||||
|  | 	<build> | ||||||
|  | 		<plugins> | ||||||
|  | 			<plugin> | ||||||
|  | 				<groupId>org.apache.maven.plugins</groupId> | ||||||
|  | 				<artifactId>maven-compiler-plugin</artifactId> | ||||||
|  | 				<version>${maven-compiler-plugin.version}</version> | ||||||
|  | 				<configuration> | ||||||
|  | 					<source>${maven.compiler.source.version}</source> | ||||||
|  | 					<target>${maven.compiler.target.version}</target> | ||||||
|  | 				</configuration> | ||||||
|  | 			</plugin> | ||||||
|  | 		</plugins> | ||||||
|  | 	</build> | ||||||
|  | 
 | ||||||
|  | 	<properties> | ||||||
|  | 		<maven.compiler.source.version>12</maven.compiler.source.version> | ||||||
|  | 		<maven.compiler.target.version>12</maven.compiler.target.version> | ||||||
|  | 		<assertj.version>3.6.1</assertj.version> | ||||||
|  | 	</properties> | ||||||
|  | 
 | ||||||
|  | </project> | ||||||
| @ -0,0 +1,77 @@ | |||||||
|  | package com.baeldung.collectors; | ||||||
|  | 
 | ||||||
|  | import java.util.Arrays; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Objects; | ||||||
|  | 
 | ||||||
|  | import org.junit.Test; | ||||||
|  | 
 | ||||||
|  | import static java.util.stream.Collectors.maxBy; | ||||||
|  | import static java.util.stream.Collectors.minBy; | ||||||
|  | import static java.util.stream.Collectors.teeing; | ||||||
|  | import static org.assertj.core.api.Assertions.assertThat; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Unit tests for collectors additions in Java 12. | ||||||
|  |  */ | ||||||
|  | public class CollectorsUnitTest { | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	public void whenTeeing_ItShouldCombineTheResultsAsExpected() { | ||||||
|  | 		List<Integer> numbers = Arrays.asList(42, 4, 2, 24); | ||||||
|  | 		Range range = numbers.stream() | ||||||
|  | 				.collect(teeing( | ||||||
|  | 						minBy(Integer::compareTo), | ||||||
|  | 						maxBy(Integer::compareTo), | ||||||
|  | 						(min, max) -> new Range(min.orElse(null), max.orElse(null)) | ||||||
|  | 				)); | ||||||
|  | 
 | ||||||
|  | 		assertThat(range).isEqualTo(new Range(2, 42)); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Represents a closed range of numbers between {@link #min} and | ||||||
|  | 	 * {@link #max}, both inclusive. | ||||||
|  | 	 */ | ||||||
|  | 	private static class Range { | ||||||
|  | 
 | ||||||
|  | 		private final Integer min; | ||||||
|  | 
 | ||||||
|  | 		private final Integer max; | ||||||
|  | 
 | ||||||
|  | 		Range(Integer min, Integer max) { | ||||||
|  | 			this.min = min; | ||||||
|  | 			this.max = max; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		Integer getMin() { | ||||||
|  | 			return min; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		Integer getMax() { | ||||||
|  | 			return max; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		@Override | ||||||
|  | 		public boolean equals(Object o) { | ||||||
|  | 			if (this == o) return true; | ||||||
|  | 			if (o == null || getClass() != o.getClass()) return false; | ||||||
|  | 			Range range = (Range) o; | ||||||
|  | 			return Objects.equals(getMin(), range.getMin()) && | ||||||
|  | 					Objects.equals(getMax(), range.getMax()); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		@Override | ||||||
|  | 		public int hashCode() { | ||||||
|  | 			return Objects.hash(getMin(), getMax()); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		@Override | ||||||
|  | 		public String toString() { | ||||||
|  | 			return "Range{" + | ||||||
|  | 					"min=" + min + | ||||||
|  | 					", max=" + max + | ||||||
|  | 					'}'; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										1
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								pom.xml
									
									
									
									
									
								
							| @ -377,6 +377,7 @@ | |||||||
|                 <module>core-groovy</module> |                 <module>core-groovy</module> | ||||||
|                 <!-- <module>core-java-10</module> --> <!-- We haven't upgraded to java 10. Fixing in BAEL-10841 --> |                 <!-- <module>core-java-10</module> --> <!-- We haven't upgraded to java 10. Fixing in BAEL-10841 --> | ||||||
|                 <!-- <module>core-java-11</module> --> <!-- We haven't upgraded to java 11. Fixing in BAEL-10841 -->  |                 <!-- <module>core-java-11</module> --> <!-- We haven't upgraded to java 11. Fixing in BAEL-10841 -->  | ||||||
|  |                 <!-- <module>core-java-12</module> --> <!-- We haven't upgraded to java 12. Fixing in BAEL-10841 --> | ||||||
|                 <module>core-java-8</module> |                 <module>core-java-8</module> | ||||||
|                 <!--<module>core-java-9</module> --> <!-- We haven't upgraded to java 9. Fixing in BAEL-10841 --> |                 <!--<module>core-java-9</module> --> <!-- We haven't upgraded to java 9. Fixing in BAEL-10841 --> | ||||||
|                 <!--<module>core-java-os</module> --> <!-- We haven't upgraded to java 9.--> |                 <!--<module>core-java-os</module> --> <!-- We haven't upgraded to java 9.--> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user