Я пытаюсь получить заголовок отсортированного набора, назначить его той же переменной, а затем добавить к нему некоторые значения, но я получаю java.lang.IllegalArgumentException: key out of range
.
Мой код ниже
import java.util.SortedSet;
import java.util.TreeSet;
class StackOverflow{
public static void main(String args[]){
SortedSet<Integer> some_set = new TreeSet<Integer>();
some_set.add(5);
some_set.add(3);
some_set.add(12);
some_set.add(15);
some_set = some_set.headSet(10);
some_set.add(10);
System.out.println(some_set);
}
}
Я читал, что есть что-то вроде ограниченного диапазона, который устанавливается с помощью headSet, но я не нашел способа предотвратить это. Есть ли способ иметь неограниченную верхнюю границу при использовании headSet или, может быть, установить ее после назначения? Единственное решение, которое я придумал, это
import java.util.SortedSet;
import java.util.TreeSet;
class StackOverflow{
public static void main(String args[]){
SortedSet<Integer> some_set = new TreeSet<Integer>();
some_set.add(5);
some_set.add(3);
some_set.add(12);
some_set.add(15);
SortedSet<Integer> temp_some_set = new TreeSet<Integer>(some_set.headSet(10));
some_set = temp_some_set;
some_set.add(10);
System.out.println(temp_some_set);
}
}
Но это создает нежелательный новый отсортированный набор с элементами из заголовка предыдущего набора, который замедляет программу, когда мне приходится выполнять такую операцию огромное количество раз.