如何避免在列表迭代中使用get
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何避免在列表迭代中使用get相关的知识,希望对你有一定的参考价值。
有什么办法可以避免在列表迭代中使用get(0)
吗?
在迭代列表时使用get(0)
将始终存在风险。
我确信在这个列表中我只有一个对象。
(P.S.我记得我的上一位经理总是对我说要避免在列表迭代中使用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的主要内容,如果未能解决你的问题,请参考以下文章