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

如何在Java中使用streams查找字符串列表中的最大长度?

寿元白
2023-03-14
public class A
{
    String name;
    String getName(){return name;}
}
List<A> list_a = new ArrayList<>();
//add n objects into list_a
final int max_len = list_a.stream().max(Comparator.comparingInt(A::getName::length));

共有1个答案

萧胜
2023-03-14

您使用的不是lambda。Lambda看起来像(arguments)->actionA::GetName中的内容是方法引用,但附加的::Lengte不是其语法的一部分。

可以使用类似于a::getname::length的lambda来代替a::getname::length

但是您的代码还有另一个问题。代码

list_a.stream()
      .max(Comparator.comparingInt(A::getName::length));
OptionalInt maxOpt  = list_a.stream()
                            .map(A::getName)
                            .mapToInt(String::length)
                            .max();
int max = maxOpt.orElse(-1); //will return value held by maxOpt, or -1 if there is no value

 类似资料:
  • 问题内容: 我正在做一个从列表中返回最长字符串值的函数。当只有一个包含最多字符的字符串时,我的代码有效。如果有多个字符串,我尝试使其打印所有最长的字符串,并且我不希望重复它们。当我运行它时,它只返回“ hello”,而我希望它也返回“ ohman”和“ yoloo”。我觉得问题就在眼前,但是我已经尝试了所有方法,但是没有用。 问题答案: 首先 ,我们可以在列表中找到任何字符串的最大长度: 一点解释

  • 问题是,我试图这么做,但我检查字符串长度的方法不起作用;我能做些什么来修复它?

  • 我需要找到字符串中最长的序列,并警告序列必须重复三次或更多次。例如,如果我的字符串是: fdwaw4helloworld vcdv1c3xcv3xcz1sda21f2sd1ahelloworld gafgfa4564534321fadghelloworld 然后我希望返回值“helloworld”。 我知道有几种方法可以做到这一点,但我面临的问题是,实际的字符串太大了,所以我真的在寻找一种能够及时

  • //我试图在我的数组列表中找到最大的字符串并将其打印出来,还包括最大元素所在的索引,并将其打印到屏幕上。我只是想知道我哪里出错了。 谢谢

  • 我正在尝试在字符串列表中获得最大数字。 我的代码是: 上述代码给出了一个错误。错误是:不可编译的源代码-错误的sym类型:Java . util . stream . stream . maptoint . max .结果我应该得到< code>1125。我尝试了不同的方法,但是没有一种有效。

  • 我有超过15个字符串列表,每个列表包含几个不同的代码。每个列表包含一种特定类型的代码。我有一个输入代码,必须找出该输入代码属于哪个列表,并根据结果返回一个特定字符串。我用if,else if来做这个。下面是示例代码 每个列表如下所示:公共静态列表codeTypeOneList=新ArrayList(); (其他代码类型的类似列表) 有没有更好的方法来实现这一点?谢谢