使用 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();
今天我试图用 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();