lambda 表达式中的返回类型,Reduce 函数
Posted
技术标签:
【中文标题】lambda 表达式中的返回类型,Reduce 函数【英文标题】:Return type in lambda expression, Reduce function 【发布时间】:2021-01-31 18:52:42 【问题描述】:在静态方法中我实现了内部类:
class Inner implements Comparable<Inner>
Integer v;
String s;
public Inner(Integer a, String st) v = a; s= st;
@Override
public int compareTo(Inner o)
int result = Integer.compare(this.v,o.v);
if (result == 0)
return (String.CASE_INSENSITIVE_ORDER.compare(this.s,o.s));
else
return result;
它的目的是保存 String 和 Integer 值。另外类实现了 Comparable 接口,所以它是可排序的
Inner 类实例的主容器是 ArrayList
ArrayList<Inner> cont = new ArrayList<>();
填充动态数组后,我想对其进行排序并下一个连接字符串值,所有这些都使用 Streams。
String res = cont.stream().sorted(Inner::compareTo).reduce(" ",(String r, Inner e)->return r+=e.s+" ";);
不幸的是,编译器向我发送错误:
Bad return type in lambda expression: String cannot be converted to Inner
有什么办法可以解决,还在用 Streams 吗?
问候
【问题讨论】:
"在静态方法中我已经实现了内部类" --- 什么静态方法? Inner 类不在方法内部,local 和 anonymous 类在。 【参考方案1】:您应该在减少之前使用.map()
获取Inner
的s
。而且最好用Collectors.joining
来加入带分隔符的字符串
cont.stream().sorted(Inner::compareTo).map(e -> e.s).collect(Collectors.joining(" "));
【讨论】:
以上是关于lambda 表达式中的返回类型,Reduce 函数的主要内容,如果未能解决你的问题,请参考以下文章
Python-函数式编程-map reduce filter lambda 三元表达式 闭包
python几个重要的函数(lambda,filter,reduce,map,zip)