Java语言中文件打开一个字典,出现重复的,然后怎么把字典里面重复的数字编号记录下来呢?
谢谢
/081837900786162.pn 这个文件的打开
以下是一个示例代码,用于在Java中读取字典文件并记录重复单词及其出现位置(编号)
import java.io.*;
import java.util.*;
public class DuplicateWordsFinder {
public static void main(String[] args) {
File file = new File("dictionary.txt"); // 字典文件路径
HashMap<String, Integer> frequencyMap = new HashMap<String, Integer>(); // 存储单词及其出现次数
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
int lineNum = 1; // 记录行号
while ((line = br.readLine()) != null) {
String[] words = line.split("\\s+"); // 对字典文件的每一行按空格拆分成单词数组
for (String word : words) {
if (frequencyMap.containsKey(word)) { // 判断哈希表中是否已经存在该单词
frequencyMap.put(word, frequencyMap.get(word) + 1); // 存在则出现次数加一
} else {
frequencyMap.put(word, 1); // 不存在则插入哈希表
}
}
lineNum++; // 行号加一
}
br.close();
// 查找重复单词
List<String> duplicateWords = new ArrayList<>();
br = new BufferedReader(new FileReader(file));
lineNum = 1;
while ((line = br.readLine()) != null) {
String[] words = line.split("\\s+");
for (String word : words) {
if (frequencyMap.get(word) > 1 && !duplicateWords.contains(word)) { // 如果该单词出现次数大于1且没有被重复记录过
duplicateWords.add(word); // 记录该单词为重复单词
System.out.println("Duplicate word found: " + word);
System.out.println("Appears at lines: ");
}
if (duplicateWords.contains(word)) { // 如果该单词是重复单词
System.out.print(lineNum + " ");
}
}
System.out.println(); // 换行
lineNum++;
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这个代码会读取指定路径下的dictionary.txt
文件,并将文件中所有单词存储在哈希表frequencyMap
中。读取单词时,对于每个单词,如果它已经在哈希表中了,就将它的出现次数加1;否则,就将它添加到哈希表中,并将出现次数设为1。
遍历完整个文件后,代码再遍历一次文件,查找哈希表frequencyMap
中出现次数大于1的单词,将它们记录在一个列表中,并输出它们出现的编号