我想知道我是否能得到一个列表或集合的第一个元素。使用哪种方法?
当前回答
我很惊讶没有人提出番石榴解决方案:
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)
其他回答
Set
set.toArray()[0];
List
list.get(0);
在Java >=8中,你也可以使用流式API:
Optional<String> first = set.stream().findFirst();
(如果Set/List可能为空,则有用。)
Java8等
Set<String> set = new TreeSet<>();
set.add("2");
set.add("1");
set.add("3");
String first = set.stream().findFirst().get();
这将帮助您检索列表或集合的第一个元素。 如果集合或列表不是空的(get()空可选将抛出java.util.NoSuchElementException)
orElse()可以用作:(这只是一种变通方法-不推荐)
String first = set.stream().findFirst().orElse("");
set.removeIf(String::isEmpty);
以下是适当的方法:
Optional<String> firstString = set.stream().findFirst();
if(firstString.isPresent()){
String first = firstString.get();
}
同样,可以检索列表的第一个元素。
希望这能有所帮助。
这不是这个问题的确切答案,但如果对象应该排序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那样)
Collection c;
Iterator iter = c.iterator();
Object first = iter.next();
(这是最接近Set的“第一个”元素。您应该意识到,对于Set的大多数实现来说,它绝对没有任何意义。这可能对LinkedHashSet和TreeSet有意义,但对HashSet没有意义。)
推荐文章
- 在Java中使用UUID的最重要位的碰撞可能性
- 转换列表的最佳方法:map还是foreach?
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- Mockito.any()传递带有泛型的接口
- 在IntelliJ 10.5中运行测试时,出现“NoSuchMethodError: org.hamcrest. matcher . descripbemismatch”
- 使用String.split()和多个分隔符
- Java数组有最大大小吗?
- 在Android中将字符串转换为Uri
- 从JSON生成Java类?
- 为什么java.util.Set没有get(int index)?
- 数组与列表的性能
- Swing和AWT的区别是什么?
- Swift设置为Array
- 为什么Java流是一次性的?