Das mag eine schon gestellte Frage sein, aber ich finde die Antwort nicht, die ich brauche.Java 8: Wie man alle Elemente eines Sets vergleicht
Ich habe ein Set mit Objekten wie
public class MyObject {
private LocalDate dateBeginning;
private LocalDate dateEnd;
public boolean overlap(MyObject otherDate) { /*code to check overlapping*/ }
}
Ich muss überprüfen, ob die Set-Elemente enthält, die einander überlappen. In "old-java" würde ich zweimal durch das Set gehen und nach allen existierenden Kombinationen suchen und dann brechen oder zurückkehren, wenn ich es finde.
Wie können wir dies mit Streams und Lambdas in Java 8 tun?
ich bereits versucht haben, mit reduction()
und filter()
aber keiner von ihnen scheinen
.filter((obj1, obj2) -> { if (obj1.overlap(obj2)) return true;}) //doesn't work
keine Antwort auf Ihre Frage, doch vielleicht hilfreich [könnten Guava ist RangeSet sein, was Sie suchen] (https://google.github.io/guava/releases/19.0 /api/docs/index.html?com/google/common/collect/RangeSet.html) – ooxi
@Eran Ich habe gelesen, dass OP eine Menge aller Elemente haben möchte, die sich mit irgendeinem anderen Element in der Menge überschneiden. – Cubic
Ja @Eran Ich möchte eine Boolean zurück.Aber eine Liste mit den überlappenden Elementen zu erhalten, wäre auch in Ordnung. – iberbeu