我有文字文件。因为我想删除重复的单词。我的文本文件包含像
这样的单词 அந்தப்
சத்தம்
அந்த
இந்தத்
பாப்பா
இந்த
கனவுத்
அந்த
கனவு
我删除重复的单词。但是结尾的'ப்','த்'的单词被认为是单独的单词而不能删除为重复的单词。如果我删除'ப்','த்',它会删除其他一些词,如பாப்பா,சத்தம்。请提前使用java.Thanks建议解决此问题的任何想法。
答案 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
。因此,如果我们的单词abcd
和abcD
在写作方面有所不同,但根据相同的规则,只会将其中一个添加到集合中。
答案 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
}
}