当前位置: 首页 > 知识库问答 >
问题:

只返回最大找到长度的元素java流[重复]

轩辕奕
2023-03-14

我正努力做到以下几点:

List<String> list = new ArrayList();
list.add("xone");
list.add("two");
list.add("xthree");
list.add("xseven");
list.stream()
    .filter( e -> e.startsWith("x"))
    .sort( e -> e.length() )
    .collect(..)

共有1个答案

左丘积厚
2023-03-14

使用流:

List<String> longest =
    list.stream().filter( e -> e.startsWith("x"))
        .collect(groupingBy(String::length))
        .entrySet()
        .stream()
        .max(comparingInt(e -> e.getKey()))
        .get()
        .getValue();

但就我个人而言,我认为最好不要使用流:尽管代码较长,但我发现它更容易遵循,而且它避免了处理所有短于已找到的最长字符串的字符串:

List<String> longest = new ArrayList<>();
int max = 0;
for (String s : list) {
  if (!s.startsWith("x")) continue;

  // Ignore the string if it is shorter.
  if (s.length() < max) continue;

  if (s.length() > max) {
    // We found a longer string. Discard the current entries.
    longest.clear();
    max = s.length();
  }

  // Add the string to the list of longest strings.
  longest.add(s);
}
 类似资料:
  • 本文向大家介绍找到字符串中最长的单词,并返回它的长度相关面试题,主要包含被问及找到字符串中最长的单词,并返回它的长度时的应答技巧和注意事项,需要的朋友参考一下 function findLongestWord(str){ // let arr=str.split(" "); let arr=str.replace(/[,|.|;]/," ").split(" "); let longLength=

  • 我有一个对象流,我想找到一个最大值的一些属性,计算起来很昂贵。 作为一个特定的简单示例,假设我们有一个字符串列表,我们希望找到最酷的一个,给定函数。

  • 我试图列出整数列表中的重复元素,例如, 使用jdk 8的流。有人试过吗?要删除重复项,我们可以使用distinct() api。但是如何找到重复的元素呢?有人能帮我吗?

  • 从提供的数组中返回 n 个最大元素。如果 n 大于或等于提供的数组长度,则返回原数组(按降序排列)。 结合使用Array.sort() 与展开操作符(...) ,创建一个数组的浅克隆,并按降序排列。 使用 Array.slice() 以获得指定的元素个数。 忽略第二个参数 n ,默认获取单个元素(以数组的形式)。 const maxN = (arr, n = 1) => [...arr].sort

  • 我想确定给定的字符串是否匹配中的元素之一(忽略大小写)。 我正试图用Java 8号溪流来实现这一点。下面是我使用的尝试: 但那不能编译。 我应该如何编码它以返回是否找到匹配?

  • 当我尝试对BigInteger使用MAX_VALUE时,它给出>>ERROR>>找不到符号变量MAX_VALUE