So in Java there are many kinds of methods. I probably won’t even list half of them but I try to explain how different methods can be. Continue reading Types of Methods in Java
There’s a lot of confusion about “functions” in Java. Java doesn’t really have them, but an object could represent a function so it kind of does have them. I try to explain the different meanings of “functions” in Java, other languages and in mathematics.
Functional Programming made easy!
Continue reading Functional Programming in Java 8
Many things are outdated and better alternatives exist.
New is used to create new objects. But it’s used carelessly.
In Java you can only reference final fields inside a closure. Here’s my solution*. Continue reading Recursive Closures in Java
Point 11 of the Joel Test asks: “Do new candidates write code during their interview?”
But how do you do that? I find most tips on the internet aren’t really helpful or realistic.
The given implementation for
hashCode is somewhat a mystery. Some misconceptions about it confuse students. I try to explain it. Continue reading Misconceptions about Object.hashCode()
Here’s an implementation of a multiset in Java 8. It uses a
Map<T, Integer> to count how many times an object was inserted (multiplicity). It is not thread-safe, but there’s
synchronizedMultiset(...) and it always knows the current size in
O(1). With the method
asMap() you can get a view of the multiset as a
Map, that will allow modification of the underlying multiset.
The code is on GitHub: github.com/claudemartin/multiset
This started as a simple implementation and is not rather complex. The iterator allows to remove elements during iteration. I tried to write my own
Spliterator, but it wasn’t faster than the default implementaion. Many methods are optimized and I added some set operations for multisets (union, intersect, minus). With
merge(...) you can merge two multisets with any operation.