如果我有一个集合,如集合<String> strs,我怎么能得到第一项?我可以调用一个迭代器,取它的第一个next(),然后丢弃迭代器。有没有更少浪费的方法呢?
当前回答
Iterables。get (indexYouWant yourC)
因为实际上,如果你使用集合,你应该使用谷歌集合。
其他回答
没有这样的东西作为“第一”项目在一个集合,因为它是…嗯,只是一个集合。
从Java文档的Collection.iterator()方法:
没有关于元素返回顺序的保证。
所以你不能。
如果使用其他接口,如List,可以执行以下操作:
String first = strs.get(0);
但直接从一个集合这是不可能的。
如果知道集合是队列,则可以将集合强制转换为队列并轻松获取它。
您可以使用几个结构来获得订单,但需要对其进行强制转换。
在Java 8中,你有很多操作符可以使用,比如limit
/**
* Operator that limit the total number of items emitted through the pipeline
* Shall print
* [1]
* @throws InterruptedException
*/
@Test
public void limitStream() throws InterruptedException {
List<Integer> list = Arrays.asList(1, 2, 3, 1, 4, 2, 3)
.stream()
.limit(1)
.collect(toList());
System.out.println(list);
}
你可以选角。例如,如果存在一个具有此定义的方法,并且您知道该方法将返回一个List:
Collection<String> getStrings();
调用它之后,你需要第一个元素,你可以这样做:
List<String> listString = (List) getStrings();
String firstElement = (listString.isEmpty() ? null : listString.get(0));
听起来你的Collection想要像list一样,所以我建议:
List<String> myList = new ArrayList<String>();
...
String first = myList.get(0);
推荐文章
- 如何格式化Joda-Time DateTime仅为mm/dd/yyyy?
- 如何在POM.xml中引用环境变量?
- 如何在android中复制一个文件?
- 将整数转换为字符串,以逗号表示千
- 接口方法的最终参数-有什么意义?
- Java中的@UniqueConstraint注释
- 如何在清洁模式下运行eclipse ?如果我们这样做会发生什么?
- 获取java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory异常
- Java中的正则表达式命名组
- c#和Java的主要区别是什么?
- 什么是NullPointerException,我如何修复它?
- 在Java中使用“final”修饰符
- 无法在Flutter上找到捆绑的Java版本
- 如何在Kotlin解析JSON ?
- 如何在新的材质主题中改变背面箭头的颜色?