İki akışın kesişimini elde etme veya kesişimlerinin boş olup olmadığını bulma genellikle Java'da mümkün değildir, çünkü akışlar yalnızca bir kez kullanılabilir ve genel çözüm karmaşıklığına sahiptir . YineAkış kavşağının boş olmadığını belirleme
<T> boolean intersects(final Stream<T> c1, final Collection<T> c2) {
return c1.filter(c2::contains).findAny().isPresent();
}
, hem bizim tedarikçileri temsil eğer sipariş: Biz altta yatan tedarikçinin doğası hakkında hiçbir şey bilmiyorsanız
, biz uzakta en fazla bir dere ve bir koleksiyonu ile alabilirsiniz koleksiyonlar aynı karşılaştırıcı kullanılarak sıralanmış (en basit durumda, ikis Comparable
s)? Bu durumda, çözüm doğrusal karmaşıklığına sahip olacaktır (veya daha doğrusu, , bakınız this cevabı).
Şimdi soru: Yukarıdaki doğrusal çözeltisi sadece Akış API (.. Yani girdi olarak iki akım kullanılarak) kullanılarak uygulanabilir?
Akışlardaki veriler sipariş edilmişse, doğrusal çözümü uygulayıp uygulayamayacağınızı mı soruyorsunuz? –
Yinelemeli çözümler ve akışlar birbirine uymuyor, bu yüzden yapabileceğiniz en iyi şey, akışlarda iterator() 'i çağırmak ve devam etmek. – Holger
@JimMischel Evet, tam olarak – Bass