Я думаю, вам нужно переосмыслить свои требования. Вам нужен набор квадратов. Почему?
Набор дает вам уникальность и итерацию, не более того. У вас есть уникальность в вашем Iterable, потому что источником является набор, и вы можете перебирать элементы в Iterable. Так зачем вам набор?
Есть только две возможные причины: либо вы работаете с API, которому нужен параметр Set (или Collection), либо вам нужно каким-то образом отобразить размер набора.
В этих случаях используйте Sets.newHashSet(iterable)
для создания набора (с одной стороны, разумеется, что требуется полная итерация, с другой стороны: вам все равно понадобится полная итерация в одной точке, когда вы перебираем значения, так почему бы не сделать это сейчас?). В противном случае просто используйте Iterable и забудьте о множестве.