2016-06-17 38 views
5

Il titolo dice tutto, qual è la procedura migliore per scoprire se la raccolta contiene elementi di altre raccolte?Come verificare se la raccolta contiene elementi di altre raccolte in Scala?

in Java avrei eseguirlo come questo

CollectionUtils.containsAny(a, b) 

utilizzando utils di raccolta comune apache, dove le variabili a/b sono raccolte.

Come implementare questo comportamento in scala? O c'è una libreria come CollectionUtils dall'alto?

Non voglio usare la libreria common-apache perché dovrei convertire la collezione scala in collezione java.

+1

C'è una differenza tra una collezione Scala e un java uno? –

+0

@RobertMoskal Sì - e infatti scala ha due gerarchie di collezioni completamente separate: immutabili e mutabili. – javadba

risposta

13

è possibile utilizzare una combinazione di exists e 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

Intersect

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

Non so perché abbia ottenuto un downvote. È la risposta ovvia –

+1

Potrebbe sembrare più pulito come 'a.intersect (b) .nonEmpty'. –

+0

La risposta ovvia è l'altra, @ TheArchetypalPaul. Ad ogni modo, non ho votato meno, semplicemente non ho votato. – pedrofurla