gpt4 book ai didi

java - 获取列表的最小和最大字符串

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:45 26 4
gpt4 key购买 nike

我有一个 List<String> list并希望按字母顺序获取该列表的第一个和最后一个字符串。我想使用 Java 8 的强大功能和带收集器的 Streams 来解决这个问题。

这不起作用:

String first = list.stream().collect(Collectors.minBy(String.CASE_INSENSITIVE_ORDER));

它给了我一个编译器错误:

Type mismatch: cannot convert from Optional to String

您能解释一下原因并告诉我做我想做的事情的最佳方法吗?

最佳答案

Collectors.minByCollectors.maxBy返回 Optional :如果 Stream 为空,则返回一个空的 Optional;否则,返回包含结果的 Optional

如果你想在 Stream 为空时有一个默认值(或者只是 null),你可以调用 orElse

String first = list.stream().collect(minBy(String.CASE_INSENSITIVE_ORDER)).orElse(null);

此外,如果您确定 Stream 不为空,您可以直接调用 get() 并检索值。


作为旁注,您还可以通过调用 Collections.min 返回最小值(分别为 Collections.max ):

String first = Collections.min(list, String.CASE_INSENSITIVE_ORDER);

无需创建 Stream 管道。请注意,如果列表为空,这将引发异常。

关于java - 获取列表的最小和最大字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34500466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com