Сборщики собирают список пары в java

У меня есть список пар, которые я хочу отсортировать по левому полю, мне это удается и получить 25 первый элемент, но теперь проблема в том, что я хочу собрать правый элемент в список (или даже оба из них ) но я не знаю как это сделать есть проблема с toList().

return listOfTokens.stream()
        .sorted((o1, o2) -> Double.compare(o1.getLeft().getCompare(terms.field.docCount),
                                           o2.getLeft().getTfIdf(terms.fielddocCount)))
        .limit(25)
        .collect(toList());

person mel    schedule 26.06.2015    source источник


Ответы (1)


Если вы хотите собрать только нужный элемент, используйте map :

return listOfTokens.stream()
.sorted((o1, o2) -> Double.compare(o1.getLeft().getCompare(terms.field.docCount), o2.getLeft().getTfIdf(terms.fielddocCount)))
        .limit(25)
        .map(o -> o.getRight())
.collect(toList());

Если вы хотите собрать и правую, и левую:

return listOfTokens.stream()
.sorted((o1, o2) -> Double.compare(o1.getLeft().getCompare(terms.field.docCount), o2.getLeft().getTfIdf(terms.fielddocCount)))
        .limit(25)
        .flatMap(o -> Stream.of(o.getLeft(),o.getRight()))
.collect(toList());
person Eran    schedule 26.06.2015
comment
Также обратите внимание, что .sorted(Comparator.comparingDouble(p -> p.getLeft().getCompare(terms.field.docCount))) короче. - person Tagir Valeev; 26.06.2015
comment
сбор по-прежнему отображается красным цветом с этим сообщением: Ошибка: java: несовместимые типы: переменная вывода T имеет несовместимые ограничения равенства границ: ... нижние границы: java.lang.String - person mel; 26.06.2015
comment
Моя ошибка не изменила возвращаемый параметр - person mel; 26.06.2015