Cześć,
w metodzie statycznej mam klasę wewnętrzną:
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;
}
}
Służy ona do przechowywania wartości: String i Integer. Ma dodatkowo zaimplementowany Comparator, aby była sortowalna.
Jako ogólny kontener na obiekty klasy wewnętrznej służy ArrayList
ArrayList<Inner> cont = new ArrayList<>();
Po wypełnieniu dynamicznej tablicy obiektami chcę przy użyciu strumieni posortować je , a następnie, przy użyciu funkcji reduce połączyć w jedno:
String res = cont.stream().sorted(Inner::compareTo).reduce(" ",(String r, Inner e)->{return r+=e.s+" ";});
tutaj kompilator wyrzuca błąd:
Bad return type in lambda expression: String cannot be converted to Inner
Co jest tego przyczyną?
Czy da radę rozwiązać problem używając eleganckich strumieni zamiast pętli?