Java:并行逐行读取时比较两个字符串

Java:并行逐行读取时比较两个字符串,java,string,Java,String,我试图找到一种比较两个字符串的好方法,在并行逐行阅读时。 我之所以不使用equals方法,是因为字符串不完全相同,更准确地说,我将给出一个示例 String s1 = "aaa\nbbb\nccc\ddd" String s2 = "aaa\n\rbbb\n\rccc\n\rddd" 正如您所看到的,当我们逐行查看时,两个字符串具有相同的值(尽管它们并不完全相等,因为s2也在其中)。 现在,我知道我可以使用一些remove方法来清除“\r”,但由于字符串可能非常大,我更喜欢逐行循环,一旦字符串

我试图找到一种比较两个字符串的好方法,在并行逐行阅读时。 我之所以不使用equals方法,是因为字符串不完全相同,更准确地说,我将给出一个示例

String s1 = "aaa\nbbb\nccc\ddd"
String s2 = "aaa\n\rbbb\n\rccc\n\rddd"
正如您所看到的,当我们逐行查看时,两个字符串具有相同的值(尽管它们并不完全相等,因为s2也在其中)。 现在,我知道我可以使用一些remove方法来清除“\r”,但由于字符串可能非常大,我更喜欢逐行循环,一旦字符串不相等,就会破坏我的逻辑。 换句话说,我更喜欢只迭代所需的行,而不是从中清除entrie字符串

编辑:我不是从文件中读取。这些是简单的字符串


有什么想法吗:)?

既然你说字符串可能非常大,我猜你是在读文件。当您使用BufferedReader并使用
readLine()时
method,您将逐行获取,不使用行分隔符。现在,您可以使用
equals()


既然你说字符串可能很大,我猜你是在读文件。当您使用BufferedReader并使用
readLine()时
method,您将逐行获取,不使用行分隔符。现在,您可以使用
equals()


您可以创建两个BufferedReader对象,每个字符串一个,逐行读取并比较表示一行的字符串。readLine()方法会自动去除行尾字符(它们不会添加到返回的字符串中)


BufferedReader br1=新BufferedReader(新StringReader(s1));是创建缓冲读取器的方式。

您可以创建两个BufferedReader对象,每个字符串一个,逐行读取,并比较代表一行的字符串。readLine()方法会自动去除行尾字符(它们不会添加到返回的字符串中)


BufferedReader br1=新BufferedReader(新StringReader(s1));是如何创建缓冲读取器的。

谢谢您的回答,但我不是从文件中读取,而且,您可以扩展如何通过并行方式完成它吗?那么,字符串从何而来?它是使用PrintStream对象生成的。顺便说一句,如果我像你建议的那样使用BufferedReader,这会是一个“巨大的浪费”吗?谢谢你的回答,但我不是从一个文件中读取的,而且,你能扩展它是如何通过并行实现的吗?那么,字符串从哪里来的?它是用PrintStream对象生成的。顺便说一句,如果我像你建议的那样使用BufferedReader,这会是一个“巨大的浪费”吗?你可以做
replaceAll(“\r\n”,“\n”)
在比较两个字符串之前。我解释说我不想这样做。我无法想象为什么要编写更多的代码,如果它们相等,性能差异可能会更大。您可以执行
replaceAll(“\r\n”,“\n”)
在比较两个字符串之前对它们进行比较。我解释说我不想这样做。我无法想象为什么要编写更多的代码,如果它们相等,性能差异可能会更大。
BufferedReader reader1 = ...; // depends on your source
BufferedReader reader2 = ...; // depends on your source

String line1 = null;
String line2 = null;

while ((line1 = reader1.readLine()) != null && (line2 = reader2.readLine()) != null)
{
     if (line1.equals(line2))
     {

     }
}