使用 Stream API 比较两个字符串并计算差异

Comparing two strings and count differences with Stream API

今天我试图用 java 中的 Stream API 比较两个字符串。 假设我们有两个字符串:

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

我们可以通过以下方式制作流:

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

现在我想比较这些字符串,一个字符一个字符地比较,当字符在同一位置不同时迭代一些变量,所以在这种情况下结果将是 1,因为这里有一个不同。

我试图从一开始就调用 map 或 forEach,但我的旅程到此结束,因为我不知道如何从第二个流中获取相应的元素。

假设两个字符串的长度相同(最大整数),您可以将差异计算为:

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

假设两个String长度相同,你也可以这样使用

        long count = IntStream.iterate(0, n-> n+1)
            .limit(str1.length()).filter(i -> str1.charAt(i) != str2.charAt(i)).count();