下面是一个代码,我试图从包含一些文本文件的文件夹(Tester)中获取文件的内容。之后,我必须从文本文件中的所有单词中创建一个字典。我得到的字(字符串),但他们正在重复,我必须删除重复的单词。
示例:
file1 - John is coding
和file2 - John is really not coding
。
所以我想要的输出是 - John is coding really not
,即不重复输出。
此外,我必须制作一个包含所有单词和相应文本文件的矩阵(就像索引器一样)。 例如:
file1 file2
John 1 1
is 1 1
coding 1 1
really 0 1
not 0 1
任何帮助都会非常感激,我被困住了。
public static void main(String[] args) throws IOException {
File folder = new File("/home/gaurav/Tester");
File[] listOfFiles = folder.listFiles();
ArrayList<String> array = new ArrayList<String>();
for (int i = 0; i < listOfFiles.length; i++) {
File file = listOfFiles[i];
if (file.isFile() && file.getName().endsWith(".txt")) {
String content = FileUtils.readFileToString(file);
String[] a = content.split(" ");
for (String s : a) {
if (!array.contains(a)) {
array.add(s);
}
}
}
}
for (int j = 0; j < array.size(); j++) {
System.out.print(array.get(j));
}
}
答案 0 :(得分:0)
ArrayList<String> array = new ArrayList<String>();
一旦你有一个重复的数组,你可以这样做:
array = new ArrayList<>(new LinkedHashSet<>(array));
设置将删除重复项,因为它是喜欢它将保持订单
在这段代码中,您试图不添加重复项:
for(String s:a){
if(!array.contains(a))
array.add(s);
}
你的错误是你正在检查包含(a)而不是包含 另外一个好主意是在比较或添加之前修剪s。所以:
for(String s:a){
s = s.trim()
if(!array.contains(s))
array.add(s);
}
答案 1 :(得分:0)
使用Set
,因为它不包含重复元素:
Set<String> words = new HashSet<>();
// ...
for(String word: a) {
words.add(word);
}