В Scala, как я могу получить количество элементов, которые никогда не показываются в обоих массивах? - PullRequest
3 голосов
/ 03 апреля 2019

например, у меня есть массив Array[Int] = Array(1, 1, 2, 2, 3) массив б Array[Int] = Array(2, 3, 4, 5) Я хотел бы посчитать, сколько элементов, которые показаны только в а или б. в данном случае это (1, 1, 4, 5), поэтому количество равно 4.

Я пробовал diff, union, intersect, но я не мог найти их комбинацию, чтобы получить желаемый результат.

Ответы [ 2 ]

5 голосов
/ 03 апреля 2019

Я думаю, что вы можете попробовать что-то вроде этого, но это не очень хороший подход, тем не менее, это поможет.

a.filterNot(b contains).size + b.filterNot(a contains).size
4 голосов
/ 03 апреля 2019

Та же идея, что и у другого ответа, но линейное время:

 a.iterator.filterNot(b.toSet).size + b.iterator.filterNot(a.toSet).size

(.iterator, чтобы избежать создания промежуточных коллекций)

...