有什么办法可以避免在列表迭代中使用get(0)
吗?
在遍历列表时,使用get(0)
将始终存在风险。
我确信在这个列表中我只有一个对象。
(P.S。我记得我的上一位经理总是对我说要避免在列表迭代中使用get(0)
。)
答案 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();