有什麼方法可以避免在列表迭代中使用get(0)
?如何避免在列表迭代中使用get(0)
在迭代列表時,使用get(0)
會很冒險。
我知道肯定在這個列表中我只有一個對象。
(PS我記得我最後的經理總是對我說,避免對列表進行迭代使用get(0)
。)
有什麼方法可以避免在列表迭代中使用get(0)
?如何避免在列表迭代中使用get(0)
在迭代列表時,使用get(0)
會很冒險。
我知道肯定在這個列表中我只有一個對象。
(PS我記得我最後的經理總是對我說,避免對列表進行迭代使用get(0)
。)
這不是真的清楚你所說的「高風險」的意思,但你可能會考慮使用番石榴的Iterables.getOnlyElement
:
List<String> foo = getListFromSomewhere();
String bar = Iterables.getOnlyElement(foo);
這表明你期望有一個且只有一個元素。如果您認爲可能沒有元素,則可以使用允許指定默認值的重載。
通過這種方式,當您詢問元素時,您的期望值會被檢查......但您不明白您還在尋找什麼。 (你記得你的最後一位經理對此有此警告 - 但你還記得爲什麼他警告過你嗎?)
編輯:我誤解了問題,沒有意識到列表中只有一個項目。雖然我的選擇仍然有效,但它們並非真正必要。但是,如果您的先決條件是存在具有單個元素的列表,我質疑使用get(0)
的危險。
您有幾種選擇:
首先是簡單地讓環獲得對象爲您提供一個for-each循環
for(Object thing : things)
其次,是列表轉換成另一種形式和訪問以適當的方式:
Object[] thingArray = things.toArray();
for(int i = 0; i < thingArray.length; i++)
第三是使用ListIterator
ListIterator<Object> thingIterator = things.listIterator();
while(thingIterator.hasNext())
{
Object thing = thingIterator.next();
Object objOne = list.iterator().next();
問:任何想法*爲什麼*這位經理告訴你「避免使用get(0)」? – paulsm4 2012-08-06 18:06:52