java Streams: prendre Collect dans le flux mental est vide

Jordi:

Je voudrais construire un Sortobjet en utilisant ce Optionalcode de -comme:

private Sort buildSort(Collection<String> fields) {
    fields.stream()
        .map(this::buildOrder)
        .collect(Sort.unsorted(), ????, ????);
}

buildOrder est:

private Order buildOrder(String field) {
    if (field.startsWith("-")) {
        return Order.desc(field.substring(1));
    }
    else {
        return Order.asc(field);
    }
}

Je dois retourner un Sort.unsorted()si le flux est vide, ou de combiner chaque Sortobjet.

Objet Trier a une andméthode qui signifie la construction et les commandes concaténer.

Sort.by(sort1)
    .and(sort2)...

Donc, j'ai besoin que:

if (stream is empty) then
  return Sort.unsorted
else
  return foreach item in stream:
     Sort.by(item).and(item2).and(item3)...

Des classes:

org.springframework.data.domain.Sort
org.springframework.data.domain.Sort.Order

REMARQUE

Je dois flux api-utilisation!

Michael :

Je crois que cela devrait fonctionner. Le second mapconvertit chaque Orderlui est propre Sort. L'accumulateur et combinateur puis juste ajouter Sortsensemble.

return fields.stream()
    .map(this::buildOrder)
    .map(Sort::by)
    .collect(Sort::unsorted, Sort::and, Sort::and);

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=222194&siteId=1
conseillé
Classement