Сравнение двух строк и подсчет различий с помощью Stream API - PullRequest
0 голосов
/ 02 сентября 2018

Сегодня я пытался сравнить две строки с Stream API в Java. Давайте предположим, что у нас есть две строки:

String str1 = "ABCDEFG"
String str2 = "ABCDEEG"

Мы можем сделать из него потоки:

str1.chars().stream()...
str2.chars().stream()...

А теперь я хочу сравнить эти строки, char по char и итерировать некоторую переменную, когда char будет отличаться в одной и той же позиции, поэтому результат в этом случае будет равен 1, потому что в этом есть одно различие.

Сначала я пытался сделать карту вызовов или forEach, и мое путешествие заканчивается, потому что я не знаю, как получить соответствующий элемент из второго потока.

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Предполагая, что обе строки имеют одинаковую длину, вы также можете использовать этот способ.

        long count = IntStream.iterate(0, n-> n+1)
            .limit(str1.length()).filter(i -> str1.charAt(i) != str2.charAt(i)).count();
0 голосов
/ 02 сентября 2018

Предполагая, что обе строки имеют одинаковую длину (целое число максимум), вы можете посчитать разницу как:

int diffCount = (int) IntStream.range(0, str1.length())
                         .filter(i -> str1.charAt(i) != str2.charAt(i)) // corresponding characters from both the strings
                         .count();
...