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

who*_*ami 4 string functional-programming string-comparison java-8

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

String str1 = "ABCDEFG"
String str2 = "ABCDEEG"
Run Code Online (Sandbox Code Playgroud)

我们可以用它来制作流:

str1.chars().stream()...
str2.chars().stream()...
Run Code Online (Sandbox Code Playgroud)

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

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

Nam*_*man 5

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

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

  • 顺便说一下,`var` 是在 [tag:java-10] 中引入的,因此根据问题的标签避免使用它。 (3认同)