我试图检索排序后的集合的头部,将其分配给相同的变量,然后再向其中添加一些值,但是我收到了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);
}
}
但是这会创建不需要的新排序集,其中包含来自前一个集的开头的元素,这在我不得不进行大量操作时会降低程序速度。