【问题标题】:Comparing two strings and count differences with Stream API使用 Stream API 比较两个字符串并计算差异
【发布时间】:2018-09-05 01:35:58
【问题描述】:

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

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

我们可以用它制作流:

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

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

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

【问题讨论】:

  • 流不能用作循环。为此制作了循环。

标签: string java-8 functional-programming string-comparison


【解决方案1】:

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

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

【讨论】:

  • 顺便说一句,var 是在java-10 中引入的,因此根据问题的标签避免使用它。
  • 既然你已经提到了,你会如何使用java10的var呢?你能把它附加到你的答案中吗?
  • @Kartik 与在本地构造中使用 var <variableName> 没有什么不同。评论是为了突出问题中的用法,现在已被编辑。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多