我想知道我是否能得到一个列表或集合的第一个元素。使用哪种方法?
当前回答
让我们假设您有一个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
其他回答
Set
set.toArray()[0];
List
list.get(0);
让我们假设您有一个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
Collection c;
Iterator iter = c.iterator();
Object first = iter.next();
(这是最接近Set的“第一个”元素。您应该意识到,对于Set的大多数实现来说,它绝对没有任何意义。这可能对LinkedHashSet和TreeSet有意义,但对HashSet没有意义。)
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();
}
同样,可以检索列表的第一个元素。
希望这能有所帮助。
可以使用get(index)方法访问List中的元素。
根据定义,集合只是包含元素,没有特定的顺序。因此,您无法获得“first”元素,但可以使用迭代器(使用for每个循环)遍历它,或使用toArray()方法将其转换为数组。
推荐文章
- for循环和for-each循环在性能上有区别吗?
- 你如何比较两个版本的字符串在Java?
- 为什么在Java和。net中不能修改字符串?
- java.util.Random真的那么随机吗?我怎么能生成52!(阶乘)可能的序列?
- ZoneOffset之间的区别是什么。UTC和ZoneId.of(“UTC”)?
- 类未找到:IntelliJ中的空测试套件
- 将JAR文件添加到Spark作业- Spark -submit
- REST API - dto还是不是?
- JavaFX应用程序图标
- Java:强/软/弱/幻影引用的区别
- 将列表转换为集合会改变元素的顺序
- 在序列化和反序列化期间JSON属性的不同名称
- 获取Android设备名称
- Gradle代理配置
- 不区分大小写列表搜索