我已经简化了代码以重现一个会抛出错误的示例:
public class Test {
public static void main(String[] args) {
NavigableSet<String> set = new TreeSet<String>(
Arrays.asList("a", "b", "c", "d"));
NavigableSet<String> set2 = new TreeSet<String>();
set2 = set.tailSet("c", false);
set2.addAll(set.headSet("b", true));
System.out.println(set2);
}
}
代码的目的是在获取集合子集时实现某种形式的翻转。例如,在上述情况下,我想要从c [不包括]到b [包括]的所有元素。我注意到如果我注释掉tailSet()或headSet()行,代码的剩余部分将正常工作。然而,当这两行都存在时,我会得到一个java.lang.IllegalArgumentException: key out of range的错误。