我一直在试图解决这个一段时间,但我的Java 8技能需要一些工作。的Java 8过滤谓词参数索引出界
我有这个问题,在一个IntStream
。我正在使用一个过滤器来调用一个谓词,它将在当前项目和列表中的下一个项目上运行一些逻辑。
return IntStream.range(0, someList.size() - 1)
.filter(n -> someMethod(someList.get(n), someList.get(n + 1)))
.mapToObj(i -> ((Integer) i).toString())
.collect(Collectors.joining(", "));
问题是没有检查最后一项。
所以说我有10个项目在列表中第一次迭代将看项目0和1,然后1和2等,直到我们得到10和IndexOutOfBounds
。
没有错误在这里抛出虽然在Java中8人或许期望这是很奇怪吗?
如何才能说“”如果我们得到索引超出范围只是返回true“?
我希望这是有道理的。干杯
你不应该试图要解决运行时异常就像一个IndexOutOfBounds。这是一个错误。只需修复该错误。尝试访问列表界限之外的索引是没有意义的。所以不要这样做。 –
正如@JBNizet所说的,你不应该试图解决'IndexOutOfBoundsException'而是解决错误。然而,仅仅为了记录,你可以用** try-catch **:'try {抛出异常的代码} catch(IndexOutOfBoundsException e){如果发生的话执行的代码}'执行。 – Zabuza
我不是想解决这个错误。我会很高兴,如果它实际上抛出错误 – SpaceCowboy