Сложность создания гарнитуры составляет O(1)
Почему?
Потому что гарнитура не является новым набором. На самом деле это представление существующего набора. Создание одного не включает в себя копирование исходного набора и даже не включает в себя поиск «связанного» элемента в наборе.
Таким образом, N
раз это O(N)
.
Однако причина, по которой ваш код не O(N)
, заключается в том, что
set.headSet(someElement).size();
НЕ O(1)
. Причина в том, что метод size()
в представлении подмножества TreeSet
вычисляется путем подсчета элементов в представлении.
(AFAIK, это не указано в javadocs, но вы можете сделать вывод, посмотрев на исходный код TreeSet
и TreeMap
.)