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 类不在方法内部,localanonymous 类在。 【参考方案1】:

您应该在减少之前使用.map() 获取Inners。而且最好用Collectors.joining来加入带分隔符的字符串

cont.stream().sorted(Inner::compareTo).map(e -> e.s).collect(Collectors.joining(" "));

【讨论】:

以上是关于lambda 表达式中的返回类型,Reduce 函数的主要内容,如果未能解决你的问题,请参考以下文章

Python-函数式编程-map reduce filter lambda 三元表达式 闭包

lambda 表达式中的错误返回类型:

python几个重要的函数(lambda,filter,reduce,map,zip)

Python基础篇第2篇: Python内置函数--map/reduce/filter/sorted

Python:lambda表达式的两种应用场景

lambda表达式简述