Outdated Java Technologies

Many things are outdated and better alternatives exist.

Continue reading Outdated Java Technologies


Multiset in Java

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.

Fork/Join with non-recursive Task

Most tutorials use some recursive Task to calculate a Fibonacci number or something similar. This leads to the false impression that Fork/Join can only handle recursive Tasks (e.g. Divide-And-Conquer). Here’s a very simple example of a non-recursive Task.
Continue reading Fork/Join with non-recursive Task