• Or search :

# Idiom #218 List intersection

Create list c containing all unique elements that are contained in both lists a and b.
c should not contain any duplicates, even if a and b do.
The order of c doesn't matter.

`const c = [...new Set(a)].filter(e => b.includes(e));`
`(def c (clojure.set/intersection (set a) (set b)))`
```using System.Linq;
using System.Collections.Generic;```
`c = a.Intersect(b).ToList();`
```seta := make(map[T]bool, len(a))
for _, x := range a {
seta[x] = true
}
setb := make(map[T]bool, len(a))
for _, y := range b {
setb[y] = true
}

var c []T
for x := range seta {
if setb[x] {
c = append(c, x)
}
}```
`import Data.List (intersect)`
`a `intersect` b`
`Classes`
```for elem in a do
if (b.indexof(elem) >= 0) and (c.indexof(elem) = -1) then
`c = list(set(a).intersection(b))`
`c = list(set(a) & set(b))`
`c = a & b`
`use std::collections::HashSet;`
```let unique_a = a.iter().collect::<HashSet<_>>();
let unique_b = b.iter().collect::<HashSet<_>>();

let c = unique_a.intersection(&unique_b).collect::<Vec<_>>();```
`use std::collections::HashSet;`
```let set_a: HashSet<_> = a.into_iter().collect();
let set_b: HashSet<_> = b.into_iter().collect();
let c = set_a.intersection(&set_b);```

programming-idioms.org