java - 如何从 Java 中的 String 中删除重复的单词?

标签 java string arraylist

我有一个 StringArrayList,它包含如下记录:

this is a first sentence
hello my name is Chris 
what's up man what's up man
today is tuesday

我需要清除这个列表,让输出不包含重复的内容。在上面的例子中,输出应该是:

this is a first sentence
hello my name is Chris 
what's up man
today is tuesday

如您所见,第三个字符串已被修改,现在只包含一个语句 what's up man 而不是两个。 在我的列表中有这样一种情况,有时String是正确的,有时又如上所示加倍。

我想去掉它,所以我考虑遍历这个列表:

for (String s: myList) {

但我找不到消除重复项的方法,尤其是因为每个字符串的长度未确定,我的意思是可能有记录:

this is a very long sentence this is a very long sentence

或者有时是短的:

single word singe word

可能有一些本地 java 函数吗?

最佳答案

假设字符串只重复两次,并且在您的示例中有一个空格,以下代码将删除重复:

for (int i=0; i<myList.size(); i++) {
    String s = myList.get(i);
    String fs = s.substring(0, s.length()/2);
    String ls = s.substring(s.length()/2+1, s.length());
    if (fs.equals(ls)) {
        myList.set(i, fs);
    }
}

代码只是将列表的每个条目拆分为两个子字符串(除以半点)。如果两者相等,则只用一半替换原始元素,从而消除重复。

我正在测试代码,但没有看到@Brendan Robert 的回答。此代码遵循与他的回答相同的逻辑。

关于java - 如何从 Java 中的 String 中删除重复的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42770863/

相关文章:

java - Intellij 14,Lambda 表达式有问题,尽管没有编译器错误但仍显示错误

Python3 : Iterating a binary string turns character into integer

java - 如何从文件中获取图像和图像名称?

java - 删除 ListView 项时出现空指针

java - 扫描 Spring Boot 应用程序中不同 Maven 模块/JAR 的组件

java - 我知道为什么运行时异常不需要 try - catch 或 throws 但我想知道它是如何设计成不需要它们的?

java - 配置布伦特里

c# - String.ToLower() 总是分配内存吗?

C 程序 - sizeof string with\0 个字符

java - 错误“找不到符号 - 方法 isCompleted()