因此我可以从stackoverflow的先前答案中看到,getFirst
和peekFirst
之间存在差异,因为如果LinkedList为peekFirst
不会抛出exception
空的。
但是getFirst
和element
有什么区别?
getFirst()返回此列表中的第一个元素。
element()检索但不删除此列表的头(第一个元素)。
如果为空,两者都会抛出NoSuchElementException
。
谢谢!
答案 0 :(得分:2)
它们与Deque
文档中指定的等效。
检索但不删除此双端队列代表的队列的头(换句话说,此双端队列的第一个元素)。此方法与peek的区别仅在于,如果此双端队列为空,它将引发异常。
此方法等效于getFirst()。
https://docs.oracle.com/javase/7/docs/api/java/util/Deque.html#element()
答案 1 :(得分:2)
element
在Queue
界面中,而getFirst
不是。但是(如其他地方所述),行为是相同的。
答案 2 :(得分:1)
source code for LinkedList全部说明:
> db.places.insert({'geometry': []})
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
> db.places.insert({'geometry': {}})
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
> db.places.insert({'geometry': null})
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
> db.places.createIndex({'geometry': '2dsphere'})
{
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
> db.runCommand({ collMod: 'places', validator: {"geometry.type": {$in:
... ["Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon"]
... }}})
{ "ok" : 1 }
方法仅调用public E element() {
return getFirst();
}
。因此,对于element()
的{{1}}实现,这两种方法都有效地完成了同样的事情。
注意:getFirst()
接口的另一个实现LinkedList
也有一个List
实现,它仅调用Deque
。
答案 3 :(得分:1)
没有区别,element
的实现是
public E element() {
return getFirst();
}
javadoc甚至声明
此方法等效于{@link #getFirst()}