Java 8 Tutorials
A series of Java 8 tips and examples, hope you like it.
FAQs
Some common asked questions.
- Java 8 forEach examples
- Java 8 Convert List to Map
- Java 8 Lambda : Comparator example
- Java 8 method references, double colon (::) operator
- Java 8 Streams filter examples
- Java 8 Streams map() examples
1. Functional Interface
Java 8 introduced @FunctionalInterface
, an interface that has exactly one abstract method. The compiler will treat any interfaces meeting the definition of a functional interface as a functional interface; it means the @FunctionalInterface
annotation is optional.
Let us see the six basic function interfaces.
Interface | Signature | Examples |
---|---|---|
UnaryOperator<T> |
T apply(T t) |
String::toLowerCase , Math::tan |
BinaryOperator<T> |
T apply(T t1, T t2) |
BigInteger::add , Math::pow |
Function<T, R> |
R apply(T t) |
Arrays::asList , Integer::toBinaryString |
Predicate<T, U> |
boolean test(T t, U u) |
String::isEmpty , Character::isDigit |
Supplier<T> |
T get() |
LocalDate::now , Instant::now |
Consumer<T> |
void accept(T t) |
System.out::println , Error::printStackTrace |
- Java 8 Function examples
- Java 8 BiFunction examples
- Java 8 BinaryOperator examples
- Java 8 UnaryOperator Examples
- Java 8 Predicate examples
- Java 8 BiPredicate examples
- Java 8 Consumer examples
- Java 8 BiConsumer examples
- Java 8 Supplier Examples
2. Lambda Expressions & Method References
Java 8 introduced lambda expressions to provide the implementation of the abstract method of a functional interface.
Further Reading >>> Java 8 Lambda : Comparator example
Review the JDK Iterable
class, it has a default
method forEach()
to accept a function interface Consumer
public interface Iterable<T> {
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
//...
}
First, we can provide an anonymous class as the forEach
implementation.
List<String> list = Arrays.asList("node", "java", "python", "ruby");
list.forEach(new Consumer<String>() { // anonymous class
@Override
public void accept(String str) {
System.out.println(str);
}
});
Alternatively, we can use a lambda expression to shorten the code like this:
List<String> list = Arrays.asList("node", "java", "python", "ruby");
list.forEach(str -> System.out.println(str)); // lambda expressions
To gain better readability, we can replace lambda expression with method reference.
List<String> list = Arrays.asList("node", "java", "python", "ruby");
list.forEach(System.out::println); // method references
Further Reading >>> Java 8 method references, double colon (::) operator
Note
Both lambda expression or method reference does nothing but just another way call to an existing method. With method reference, it gains better readability.
3. Streams
- Java 8 Streams filter examples
- Java 8 Streams map() examples
- Java 8 flatMap example
- Java 8 Parallel Streams Examples
- Java 8 Stream.iterate examples
- Java 8 Stream Collectors groupingBy examples
- Java 8 Filter a null value from a Stream
- Java 8 Convert a Stream to List
- Java 8 Stream findFirst() and findAny()
- Java 8 Stream.reduce() examples
- Java 8 Convert a Stream to List
- Java 8 How to Sum BigDecimal using Stream?
- Java 8 Stream – Read a file line by line
- Java 8 Stream – Convert List<List<String>> to List<String>
- Java 8 Stream – The peek() is not working with count()?
- Java 8 Should we close the Stream after use?
- Java 8 Convert a Stream to Array
- Java 8 How to convert IntStream to Integer array
- Java 8 How to convert IntStream to int or int array
- Java 8 How to sort list with stream.sorted()
- Java – How to sum all the stream integers
- Java – How to convert a primitive Array to List
- Java – How to convert Array to Stream
- Java – Stream has already been operated upon or closed
4. New Date Time APIs
In the old days, we use Date
and Calendar
APIs to represent and manipulate date.
java.util.Date
– date and time, print with default time-zone.java.util.Calendar
– date and time, more methods to manipulate date.java.text.SimpleDateFormat
– formatting (date -> text), parsing (text -> date) for date and calendar.
Java 8 created a series of new date and time APIs in java.time
package. (JSR310 and inspired by Joda-time).
java.time.LocalDate
– date without time, no time-zone.java.time.LocalTime
– time without date, no time-zone.java.time.LocalDateTime
– date and time, no time-zone.java.time.ZonedDateTime
– date and time, with time-zone.java.time.DateTimeFormatter
– formatting (date -> text), parsing (text -> date) for java.time.java.time.Instant
– date and time for machine, seconds passed since the Unix epoch time (midnight of January 1, 1970 UTC)java.time.Duration
– Measures time in seconds and nanoseconds.java.time.Period
– Measures time in years, months and days.java.time.TemporalAdjuster
– Adjust date.java.time.OffsetDateTime
– {update me}
Examples…
- Java – How to get current date time
- Java – How to get current timestamp
- Java – How to convert String to a Date
- Java 8 – Duration and Period examples
- Java 8 – How to convert String to LocalDate
- Java 8 – How to format LocalDateTime
- Java 8 – Convert Instant to LocalDateTime
- Java 8 – Convert Instant to ZoneDateTime
- Java 8 – Convert Date to LocalDate and LocalDateTime
- Java 8 – ZonedDateTime examples
- Java – Convert date and time between timezone
- Java – How to add days to current date
- Java 8 – TemporalAdjusters examples
- Java 8 – Convert Epoch time milliseconds to LocalDate or LocalDateTime
- Java 8 – Difference between two LocalDate or LocalDateTime
- Java 8 – How to calculate days between two dates?
- Java 8 – How to parse date with "dd MMM" (02 Jan), without year?
- Java 8 – Convert LocalDate and LocalDateTime to Date
- Java 8 – Unable to obtain LocalDateTime from TemporalAccessor
- Java 8 – Convert ZonedDateTime to Timestamp
- Java – Display all ZoneId and its UTC offset
- Java 8 – Convert LocalDateTime to Timestamp
- Java – How to change date format in a String
- Check if the date is older than 6 months
- Java – How to compare dates
- Java – How to calculate elapsed time
- Java 8 – MinguoDate examples (Taiwan calendar)
- Java 8 – HijrahDate, How to calculate the Ramadan date (Islamic calendar)
- Java Date Time Tutorials
5. Java 8 Tips
- Java 8 Optional In Depth
- Java 8 How to sort a Map
- Java 8 Convert List to Map
- Java 8 Filter a Map examples
- Java 8 Convert Map to List
- Java 8 StringJoiner example
- Java 8 Math Exact examples
- Java 8 forEach print with Index
- Java 8 Convert Optional<String> to String
- Java – How to print a Pyramid
- Java – Check if Array contains a certain value?
- Java – How to join Arrays
- Java – Generate random integers in a range
- Java – How to print a name 10 times?
- Java – How to search a string in a List?
- Java – How to get keys and values from Map
- Java – Convert File to String
- Java – Convert Array to ArrayList
- Java – How to check if a String is numeric
- Java – How to join List String with commas
- Java – Convert comma-separated String to a List
- Java Prime Numbers examples
- How to tell Maven to use Java 8
- java.lang.UnsupportedClassVersionError
- Java Fibonacci examples
- How to loop a Map in Java
- Java Regular Expression Examples
- How to read file in Java – BufferedReader
Installation
- How to install Oracle JDK 8 on CentOS
- How to Install Oracle JDK 8 On Debian
- How to install Java on Mac OS
From last 5 years,I am referring Mkyong.com whenever I need help. Thanks..
I have been referring to this website for a long time ago. I like the way information is shared on this website. The explanation of the requirement and scenario is very clearly documented. The font-size, color combination, text format and wrapper of the code is eye-catching. I would use this website because it has a clear explanation of the topic and solution. It has good examples written in pretty understandable, easy and simple language.
Usually, I don’t write the review for any of the websites that I follow but this website has helped me a lot on solving my project issues, providing me the best way to solve the problem. I am really impressed by its content. I am always getting clear technical understanding from this website. I want to thank a lot to the owner of this website for making this technical website and sharing a bunch of useful information. I am pretty sure a lot of beginners and intermediate level developers or students will be referencing this website to gain useful and valuable knowledge. I really think this is a great platform to learn and share information to and from this site. Once again a big thank you to the owner Mkyong for designing such a wonderful website and providing valuable knowledge.
Yes, the website explains the technical issues with an easy and simple example, you can catch the points very fast. I also reference the website for a long time. Thanks very much for Mr. MKYONG’s contribution. thanks again
Thank you so much! Your comment really means a lot to me 🙂
Hi Sir, Do you offer training.
Thank you :)))
Excellent java 8 resources
May be you lack of “match” method…
I need to thank you for your useful and categorized information to help transfer the right knowledge
I love the way you love what you do and how you do it exceptionally well. Keep it up!
One of the most important features of lambdas is behind the scenes it supports optimisation using invokedynamic. Also the streams api does very well when used in parallel mode on multi cpu, multi core machines. I found more about that here
https://stackrules.com/learn-java-8-streams-api-in-an-hour/
Good
The best website for Java. The examples and the references listed are what I need to learn the new feature since Java 8. My simple words can’t express my appreciation to Mkyong.
thanks to your article, it helps me a lot
It would be nice to have an example under the concurrent package
thanks
Hi..I am new to Java but your material seems very well structured and I find it very good..Thank you
I will look at the mentioned charities
Liam
awesome resource
Mkyong.com is one of my masters in java
thank you 😀 😀 😀
A very trustworthy study resource. Thanks a ton!
Great!
Thanks, you are the man!
Great explanations , do you offer training ?
where is the definition for Developer.java?
Nice examples.. Thank you
Very good java 8 resource.
Hi
Thank you so much and please provide source code too.
Sathya
hi!,I love your writing so much! share we communicate more approximately your post on AOL? I need an expert in this space to resolve my problem. Maybe that’s you! Looking forward to peer you. kabackkckkebkbce
Nice tutorial !
StackOverflow and MkYoung you are next to Oracle(Sun) when it is about Java 🙂
hgh
can’t say anything for article. tks so much. love u
try to add all methods in java8 otherwise super.