如何避免在列表迭代中使用get(0)

时间:2012-08-06 17:56:03

标签: java list data-structures iterator iteration

有什么办法可以避免在列表迭代中使用get(0)吗?

在遍历列表时,使用get(0)将始终存在风险。

我确信在这个列表中我只有一个对象。

(P.S。我记得我的上一位经理总是对我说要避免在列表迭代中使用get(0)。)

3 个答案:

答案 0 :(得分:9)

“风险”并不是很明确你的意思,但你可以考虑使用番石榴Iterables.getOnlyElement

List<String> foo = getListFromSomewhere();
String bar = Iterables.getOnlyElement(foo);

这清楚地表明您希望只有一个元素。如果您认为可能没有元素,则可以使用允许您指定默认值的重载。

这样一来,当你要求元素时,你的期望会得到检查......但是你还在寻找其他什么并不明显。 (你还记得你的上一位经理警告你这件事 - 但你还记得为什么他警告过你?)

答案 1 :(得分:2)

编辑:我误解了这个问题,没有意识到列表中只有一个项目。虽然我的选择仍然有用,但它们并不是必需的。但是,如果您的前提条件是列表中包含单个元素,我会质疑使用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();

答案 2 :(得分:0)

Object objOne = list.iterator().next();