如果我有一个集合,例如 Collection<String> strs
,我怎样才能得到第一个项目?我可以调用 Iterator
,取其第一个next()
,然后抛出 Iterator
离开。有没有更浪费的方法?
看起来这是最好的方法:
String first = strs.iterator().next();
好问题...起初,这似乎是对 Collection
的疏忽。界面。
请注意,“first”并不总是返回您放入集合中的第一件事,并且可能只对有序集合有意义。也许这就是为什么没有 get(item)
调用,因为不一定保留顺序。
虽然看起来有点浪费,但它可能没有你想象的那么糟糕。 Iterator
实际上只包含集合中的索引信息,而不是整个集合的通常副本。调用此方法会实例化 Iterator
对象,但这确实是唯一的开销(不像复制所有元素)。
例如,查看 ArrayList<String>.iterator()
返回的类型方法,我们看到它是ArrayList::Itr
.这是一个内部类,它只是直接访问列表的元素,而不是复制它们。
请务必检查 iterator()
的返回值因为它可能是空的或 null
取决于实现。
我是一名优秀的程序员,十分优秀!