Java:从集合中获取第一项

新手上路,请多包涵

如果我有一个集合,例如 Collection<String> strs ,我怎样才能取出第一个项目?我可以调用 Iterator ,拿走它的第一个 next() ,然后扔掉 Iterator 。有没有一种不那么浪费的方法呢?

原文由 Nick Heiner 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 641
2 个回答

Iterables.get(yourC, indexYouWant)

因为实际上,如果您使用的是 Collections,那么您应该使用 Google Collections。

原文由 Carl 发布,翻译遵循 CC BY-SA 3.0 许可协议

看起来这是最好的方法:

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

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

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

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

例如,查看 ArrayList<String>.iterator() 方法返回的类型,我们看到它是 ArrayList::Itr 。这是一个内部类,它直接访问列表的元素,而不是复制它们。

请务必检查 iterator() 的返回,因为它可能为空或 null 取决于实现。

原文由 jheddings 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏