2014-02-20 423 views
-6
ArrayList.get(-1) // why it will not return the last element? 
+16

因为Java不是Python。 –

+0

Java不支持Python方式。 –

+2

'ArrayList.get(ArrayList.size() - 1)'是你正在寻找的东西。但是,您必须确保ArrayList不为空,否则您将遇到错误。 – turbo

回答

1

首先,的Java的Python(虽然Jython实现的Python的Java)。其次,你应该阅读ArrayList中JavaDoc - 这是它抛出一个Exception

IndexOutOfBoundsException - if the index is out of range (index < 0 || index >= size()) 

最后,你可以做到这一点

myList.get(myList.size() - 1); 

List(例如myList)得到这个最后一个元素。

0

不回答为什么它不可能,因为它不在StackOverflow的范围内。

但使用Java 8时,有可能以下列方式:

Optional<E> optE = eCollection.stream().reduce((previous, current) -> current);

,如果它存在,你可以通过optE.get()得到它,一旦你已经测试了optE.isPresent()存在。

但是,我相当肯定这会导致性能损失,因为您正在减少流,而您只是想检查最后一个值。

我有一些希望它会在Java中9添加,如果有足够多的人使用Java 8时抱怨,因为在我的例子中,你不能这样做容易,因为获得的第一要素,这将是:

Optional<E> optE = eCollection.stream().findFirst()

编辑,还注意到实际目的,其他操作进行findFirst()调用。例如拨打filter()

相关问题