如何使用java删除重复的单词

如何使用java删除重复的单词,java,Java,我有一个文本文件。因为我想删除重复的单词 அந்தப் சத்தம் அந்த இந்தத் பாப்பா இந்த கனவுத் அந்த கனவு 我删除重复的单词。但是有结尾的词'ப்' , 'த்' 被认为是分开的词,不能作为重复的词删除。如果我删除'ப்' , 'த்' 它从其他一些词中删除,如பாப்பா, சத்தம். 请提出使用java解决此问题的任何想法。提前谢谢。我想我会使用带有自定义compera

我有一个文本文件。因为我想删除重复的单词

    அந்தப்
    சத்தம்
    அந்த
    இந்தத்
    பாப்பா
    இந்த
    கனவுத்
    அந்த
    கனவு

我删除重复的单词。但是有结尾的词'ப்' , 'த்' 被认为是分开的词,不能作为重复的词删除。如果我删除'ப்' , 'த்' 它从其他一些词中删除,如பாப்பா, சத்தம். 请提出使用java解决此问题的任何想法。提前谢谢。

我想我会使用带有自定义comperator(如a)的集合。这样你就可以用任何你喜欢的方式定义相等

使用扫描仪将每一行作为字符串扫描到一个集合中,然后将集合中的字符串写入一个文件。

首先,您应该向我们解释如何解析您的文件,因为您的文件似乎工作不正常。然后,在我看来,对于非重复查询,最明显的建议是使用a(甚至a),根据给定的集合规则,它应该确保元素的唯一性。

我不理解给定的语言(google translate的猜测是泰米尔语),但从你的问题中我读到,对于用这种语言书写的单词,有特殊的“平等”规则——即使它们的书写方式不同(例如,有不同的结尾),类单词也可以是平等的

因此,您可能希望将包含该语言单词的字符串包装在特殊对象中,您可以在其中定义自定义的“equals”方法,如下所示:

public class TamilWord {

  String writtenWord = null;

  public TamilWord(String writtenWord) {
    this.writtenWord = writtenWord;
  }

  public String getWrittenWord() {
    return writtenWord;
  }

  @Overwrite
  public boolean equals(Object other) {

    // Define your custom rules here, so that two words that
    // are written differently may be considered as equal        

  }
}
然后,您可以为所有解析的字符串创建
TamilWord
对象,并将它们放入 a
设置
。因此,如果我们有
abcd
abcd
这两个词,它们在书写上是不同的,但根据被视为相等的规则,那么这些词中只有一个会被添加到集合中。

我的解决方法是:

逐字阅读并将其放入
java.util.Set
。最后,您将拥有无重复项的集合。您还应该定义
这个词
类:

class TheWord {
  String word;

  public TheWord() {}

  public String getWord() {
    return word;
  }

  public void setWord(String word) {
    this.word = word;
  }

  public boolean equals(TheWord o) {
    // put here your specific way to compare words 
    // taking into account your language rules and considerations
  }
}

我(至少)有时候会说“是”结尾的话,这是对的吗ப்' 而且த்' 你是平等的吗?我也不知道泰米尔人。。。但是,可能执行某种类型的词干分析?类似于英语:播放,播放所有地图播放或类似的东西。