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

时间:2010-07-19 09:18:42

标签: java

我有文字文件。因为我想删除重复的单词。我的文本文件包含像

这样的单词
    அந்தப்
    சத்தம்
    அந்த
    இந்தத்
    பாப்பா
    இந்த
    கனவுத்
    அந்த
    கனவு

我删除重复的单词。但是结尾的'ப்','த்'的单词被认为是单独的单词而不能删除为重复的单词。如果我删除'ப்','த்',它会删除其他一些词,如பாப்பா,சத்தம்。请提前使用java.Thanks建议解决此问题的任何想法。

5 个答案:

答案 0 :(得分:3)

我想我会使用带有自定义比较器的Set(例如TreeSet)。这样你就可以按照自己喜欢的方式定义。

答案 1 :(得分:2)

我不明白给定的语言(谷歌翻译的猜测是泰米尔语),但是从我的问题中我读到,对于用该语言编写的单词有“特殊”的特殊规则 - 就像单词即使它们也可以相等用不同的方式写成(例如用不同的结尾)。

因此,您可能希望将包含该语言单词的字符串包装在特殊对象中,您可以在其中定义自定义'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个对象并将其放入 一个Set。因此,如果我们的单词abcdabcD在写作方面有所不同,但根据相同的规则,只会将其中一个添加到集合中。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

首先,您应该向我们解释您如何解析文件,因为您的tokenization似乎无法正常工作。然后,在我看来,查询未重复的明显建议是使用Set(甚至是TreeSet),这应该根据给定的Set contains规则确保元素的唯一性

答案 4 :(得分:0)

我的解决方法:

逐字阅读并将其放入java.util.Set<TheWord>。最后,您将拥有Set,没有重复项。您还应该定义TheWord class:

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
  }
}