2016-06-17 27 views
5

Tytuł mówi wszystko, jaka jest najlepsza praktyka, aby dowiedzieć się, czy kolekcja zawiera element innej kolekcji?Jak sprawdzić, czy kolekcja zawiera jakikolwiek element z innej kolekcji w Scali?

w Javie Chciałbym wykonać go jak ten

CollectionUtils.containsAny(a, b) 

za pomocą utils zbiórki wspólny Apache, gdzie zmienne a/b są kolekcje.

Jak zaimplementować to zachowanie w scala? Czy istnieje biblioteka taka jak CollectionUtils z góry?

Nie chcę używać wspólnej biblioteki apache, ponieważ musiałbym przekonwertować kolekcję scala do kolekcji java.

+1

Czy istnieje różnica pomiędzy kolekcji scala i jednego java? –

+0

@RobertMoskal Tak - w rzeczywistości scala ma dwie całkowicie oddzielne hierarchie kolekcji: niezmienne i zmienne. – javadba

Odpowiedz

13

Można użyć kombinacji exists i contains:

val a = List(1,2,3,4,5,6,7) 
val b = List(11,22,33,44,55,6) 

a.exists(b.contains) // true 
7

Przecięcie

val a = Seq(1,2,3) ; val b = Seq(2,4,5) 
a.intersect(b) 
res0: Seq[Int] = List(2) 

// to include the test: 
a.intersect(b).nonEmpty // credit @Lukasz 
+0

Nie wiem, dlaczego to się stało. To jest oczywista odpowiedź. –

+1

Może wyglądać czysto jak "a.intersect (b) .nonEmpty". –

+0

Oczywistą odpowiedzią jest druga, @TheArchetypalPaul. W każdym razie, nie padłem, tylko nie głosowałem. – pedrofurla

Powiązane problemy