Java:从集合中获取第一项

如果我有一个集合,例如collection<字符串>strs,如何取出第一件物品?我可以调用一个迭代器,取下它的第一个next(),然后扔掉迭代器。有没有一种不那么浪费的方法呢

看起来这是最好的方法:

String first=strs.iterator().next();

好问题。。。起初,这似乎是对集合接口的疏忽

请注意,“first”并不总是返回您放入集合中的第一个内容,并且可能仅对有序集合有意义。也许这就是为什么没有get(item)调用的原因,因为顺序不一定被保留

虽然这看起来有点浪费,但可能并不像你想象的那么糟糕。迭代器实际上只包含集合中的索引信息,而不是整个集合的副本。调用此方法确实实例化了迭代器对象,但这实际上是唯一的开销(与复制所有元素不同)

例如,查看ArrayList<字符串>。迭代器()方法,我们看到它是ArrayList::Itr。这是一个内部类,它只直接访问列表中的元素,而不是复制它们

只需确保检查iterator()的返回,因为它可能是空的或null取决于实现

发表评论