I found it curious that you compare with 2 alternatives for performance and with java hashsets for memory usage. It would be nice to compare both performance and memory with the same 3 alternatives, else it seems you are conveniently selecting data instead of showing the right tradeoff.