我想知道我是否能得到一个列表或集合的第一个元素。使用哪种方法?
当前回答
Collection c;
Iterator iter = c.iterator();
Object first = iter.next();
(这是最接近Set的“第一个”元素。您应该意识到,对于Set的大多数实现来说,它绝对没有任何意义。这可能对LinkedHashSet和TreeSet有意义,但对HashSet没有意义。)
其他回答
让我们假设您有一个List<String>字符串,您想从中获取第一项。
有几种方法可以做到:
Java (pre-8):
String firstElement = null;
if (!strings.isEmpty() && strings.size() > 0) {
firstElement = strings.get(0);
}
Java 8:
Optional<String> firstElement = strings.stream().findFirst();
番石榴
String firstElement = Iterables.getFirst(strings, null);
Apache commons (4+)
String firstElement = (String) IteratorUtils.get(strings, 0);
Apache commons(4之前)
String firstElement = (String) CollectionUtils.get(strings, 0);
后面跟着或封装在适当的检查或try-catch块中。
科特林:
在Kotlin中,数组和大多数集合(例如:List)都有第一个方法调用。 你的代码应该是这样的
有关名单:
val stringsList: List<String?> = listOf("a", "b", null)
val first: String? = stringsList.first()
对于数组:
val stringArray: Array<String?> = arrayOf("a", "b", null)
val first: String? = stringArray.first()
后面跟着或封装在适当的检查或try-catch块中。
Kotlin还为Kotlin提供了更安全的方法。例如,当使用JRE8时,firstOrNull或getOrElse或getOrDefault
这不是这个问题的确切答案,但如果对象应该排序SortedSet有一个first()方法:
SortedSet<String> sortedSet = new TreeSet<String>();
sortedSet.add("2");
sortedSet.add("1");
sortedSet.add("3");
String first = sortedSet.first(); //first="1"
排序对象必须实现Comparable接口(就像String那样)
Set
set.toArray()[0];
List
list.get(0);
在Java >=8中,你也可以使用流式API:
Optional<String> first = set.stream().findFirst();
(如果Set/List可能为空,则有用。)
我很惊讶没有人提出番石榴解决方案:
com.google.common.collect.Iterables.get(collection, 0)
// or
com.google.common.collect.Iterables.get(collection, 0, defaultValue)
// or
com.google.common.collect.Iterables.getFirst(collection, defaultValue)
或者如果你想要单个元素:
com.google.common.collect.Iterables.getOnlyElement(collection, defaultValue)
// or
com.google.common.collect.Iterables.getOnlyElement(collection)
推荐文章
- Eclipse调试器总是阻塞在ThreadPoolExecutor上,没有任何明显的异常,为什么?
- Java生成两个给定值之间的随机数
- 如何有效地从数组列表或字符串数组中删除所有空元素?
- 比较JUnit断言中的数组,简洁的内置方式?
- 在每个列表元素上调用int()函数?
- codestyle;把javadoc放在注释之前还是之后?
- 如何在Spring中定义List bean ?
- 将Set<T>转换为List<T>的最简洁的方法
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用Java重命名文件
- URL从Java中的类路径加载资源
- .toArray(new MyClass[0]) or .toArray(new MyClass[myList.size()])?
- Hibernate中不同的保存方法之间有什么区别?
- Java 8流和数组操作
- 在Python中插入列表的第一个位置