如何避免在列表迭代中使用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的主要内容,如果未能解决你的问题,请参考以下文章

如何在UL中迭代使用appendChild和片段LI?

如何使列表视图出现在片段中?

如何在Django视图中使用for循环返回每次迭代[关闭]

如何向 ViewPager 提供许多片段并避免错误代码?

Groovy,如何使用索引迭代列表

如何在片段中填充列表视图?