HashSet được triển khai bằng cách sử dụng một bảng hash và do đó, các phần tử của nó không được sắp xếp theo thứ tự. Các phương thức add, remove và contains của một HashSet có độ phức tạp thời gian không đổi O(1).
Mặt khác, một TreeSet được thực hiện bằng cách sử dụng cấu trúc cây. Các phần tử trong TreeSet được sắp xếp và do đó, các phương thức add, remove và contains có độ phức tạp về thời gian là O(logn).