Я всегда любил деревья, такие красивые O(n*lg(n)) и аккуратность их. Однако каждый инженер-программист, которого я когда-либо знал, спросил меня, почему я бы использовал TreeSet. Из CS-фона я не думаю, что это имеет значение для всего, что вы используете, и мне не нужно возиться с хэш-функциями и ведрами (в случае Java).
В каких случаях я должен использовать HashSet над TreeSet?