Optimizing your equals() methods with Pattern Matching - JEP Cafe #21
How can you write simple and performant equals() methods for your Java classes: the full tutorial.
Usually you do not write your equals() and hashCode() methods yourself. You delegate that to your IDE and forget about it. This JEP Café deep dives into the different solutions offered by Eclipse and IntelliJ, as well as Guava and Apache Commons Lang 3. It compares these solutions and checks the performance they offer on various real-life use cases. It also compares them with the Pattern Matching solution, available from Java 17 and Java 21.
⎯⎯⎯⎯⎯⎯ Chapters ⎯⎯⎯⎯⎯⎯
0:00 Intro: designing equals() methods
1:13 Generating equals() and hashCode() methods
1:56 What could go wrong with a bad hashCode() method
4:31 Taking a look at the generated equals() methods
7:11 Checking the record and pattern matching implementations
9:33 What is predictive branching, what is the cost of a failing prediction?
12:41 Evaluating the cost of two failing predictions.
14:53 Evaluating the performance of equals() methods on simple data sets
16:07 First data set: all the objects are the same instance
16:46 Second data set: different instances carrying the same state
18:43 Third data set: different objects of the same type
20:41 Fourth data set: objects of different types
22:00 First conclusions on what patterns are the best
22:39 Adding glitches to the data sets
24:41 Results for first data set (same instances) with glitches
25:20 Results for second data set (equal instances) with glitches
26:07 Results for third data set (different instances) with glitches
28:30 Results for fourth data set (different types) with glitches
30:05 What conclusions can you draw from all these benches?
32:33 That’s it for today, talk to you soon!
⎯⎯⎯⎯⎯⎯ Resources ⎯⎯⎯⎯⎯⎯
◦ Pattern Matching for intanceof ➱
◦ Records ➱
◦ Record Patterns ➱
◦ Guava ➱
◦ Apache Commons Lang 3 ➱
◦ Eclipse IDE ➱
◦ IntelliJ IDE ➱
◦ JMH on GitHub, with doc and samples ➱
◦ Alexey Shipilev on JMH ➱
◦ ➱
◦ ➱
◦ JDK 21 ➱
◦ JDK 17 ➱
◦ OpenJDK ➱
◦ Oracle Java ➱
#Java #Java21 #OpenJDK #JDK #JDK21 #Collection #JEPCafe #insidejava
2 views
805
274
4 weeks ago 00:03:49 1
Crypto Arbitrage Strategy: Turn Volatility into 500 SOL Profits
4 weeks ago 00:44:31 1
class 3 interproximal contacts, composite Restoration
4 weeks ago 00:05:52 1
Bot Trading : Is CoinTech2U the Key to Financial Freedom?
1 month ago 00:04:55 1
Everybody wants to rule the world cover in Classical Latin (SOFTBARDCORE)
1 month ago 00:06:54 1
How to Profit from Metaverse Crypto – Best Projects and Strategies!
1 month ago 00:05:32 1
Auto Typing Software for Notepad RT++ Data Entry | Auto Typer for Notepad RTX++ .rtx Data Entry Work
2 months ago 00:05:35 1
Best AliExpress Alternatives for Dropshipping: The Game-Changing Tactics You Need! 🗣
2 months ago 00:03:13 1
AI Trading Bot: Can CoinTech2U Really Make Profits? Find Out!
2 months ago 00:05:07 1
Is Yield Farming the FUTURE of Investing? Here’s What You Need to Know!
2 months ago 00:23:23 17
Create CONSISTENT CHARACTERS from an INPUT IMAGE with FLUX! (ComfyUI Tutorial + Installation Guide)
2 months ago 00:11:19 1
10 Integrative Approaches in Plastic Surgery | Episode 10 of SurgiMind Podcast | Plastic Surgery
3 months ago 00:01:00 1
Amazing Transforming Space Saving Furniture | Cool Murphy Bed Ideas for Small Home Space Innovations
3 months ago 00:05:00 3
VV. Kazakov - Indigo (2020)
3 months ago 00:01:00 1
AWESOME Space Saving Furniture | Murphy Bed Ideas for Small Spaces Furniture Innovations
3 months ago 00:03:04 1
How To Get The Grand Mafia Gold - The Grand Mafia Hack | Working on iOS/Android apk 2024
3 months ago 00:04:33 1
Tai Chi for Ultimate Wellness: Relieve Fatigue, Alleviate Pain, and Boost Overall Health
3 months ago 00:04:03 1
1968 Ford Mustang Fastback For Sale at Gateway Classic cars of Orlando Stock#2713