Protokollierung das Ergebnis der filter während der Verwendung von java streams filter-Prädikat

Das Szenario ist, es gibt verschiedene Arten von filtern, die ich geschaffen habe, welche Filter die Liste der einige Objekte auf der Grundlage der Eigenschaft des Objekts.

Also für das, dass ich erstellt habe, eine AbstractObjectFilter Klasse, die geerbt, die von jedem filter.

AbstractObjectFilter.java

public abstract class AbstractEventFilter
{
    protected abstract Predicate<IEvent> isEligible();

    public List<IEvent> getFilteredEvents(final List<IEvent> events)
    {
        return events.stream().filter(isEligible()).collect(Collectors.toList());
    }
}

So, jetzt jeden filter erweitert diese Klasse und überschreibt die isEligible() und in dieser Funktion zurückgegeben, die das Prädikat basiert auf seinen Eigenschaften.

ZB:-
MinNumOfPrizesFilter.java

public class MinimumNumOfPrizesFilter extends AbstractEventFilter
{
    private int minimumNumOfPrizes;

    public MinimumNumOfPrizesFilter(@NonNull int minimumNumOfPrizes)
    {
        this.minimumNumOfPrizes = minimumNumOfPrizes;
    }

    @Override
    protected Predicate<IEvent> isEligible()
    {
        return event -> event.getPrizeCount() >= minimumNumOfPrizes;
    }
}

Ebenso gibt es viele andere Filter, die ich erstellt habe. Es ist eine applyFilter-Funktion, die Iteration über die Liste von filter-Objekten und halten die Anwendung filter-by-call getFilteredEvents Funktion.

Nun, wie kann ich mich anmelden das Schicksal der einzelnen Ereignis-Zum Beispiel - "x1 Ereignis gefiltert wurde, MinNumOfPrizesFilter filter. x1 Preis zu zählen - 10 , erforderlich min-Preis - count 20"

  • Was ist der Punkt, der den lambda-Ausdruck hier? Im Vergleich zu den konventionellen Ansatz, der nur lassen AbstractEventFilter implementieren Predicate<IEvent> direkt, so dass Sie in Unterklassen nur um die Umsetzung der test Methode, es ist nicht eine Vereinfachung.
  • Übrigens, es ist sinnlos zu kommentieren ein int variable mit @NonNull als int Werte können nie null sowieso.
InformationsquelleAutor rcipher222 | 2017-04-22
Schreibe einen Kommentar