如何实现检查一个大 txt 文件里数据是否重复的功能 如题,文件的每一行数据结构都是相同的,字段值通过一个自定义分隔符分割。比如有如下结构数据,id|name|bizNo ,检查 id 是否重复。 最好是 java 实现的 重复, txt, 检查, 文件
要检查一个包含重复数据的文本文件中的数据是否重复,你可以按照以下步骤进行: 使用 BufferedReader 和文件流读取文件内容。 将每行内容分割为字段,这里使用你提供的自定义分隔符 | 作为字段间分隔符。 使用哈希表(或 HashSet )来存储每个字段的值。 遍历每个字段的值,如果已经在哈希表中存在该值,则说明数据重复,否则将该值添加到哈希表中。 检查哈希表的大小,如果大小大于预期 Repeat Count ,则说明数据存在重复。 下面是一个 Java 示例代码,你可以根据自己的需求进行修改: import java.io.*; import java.util.HashMap; import java.util.Map; public class CheckDuplicateData { public static void main(String[] args) throws IOException { String fileName = "data.txt"; // 文件名 String delimiter = "|"; // 自定义分隔符 int repeatCount = 2; // 预期的重复次数 Map countMap = new HashMap(); // 统计每个字段的值出现的次数 try (BufferedReader br = new BufferedReader(new FileReader(fileName))) { String line; while ((line = br.readLine()) != null) { String[] fields = line.split(delimiter); // 分割每行为字段 for (String field : fields) { if (!countMap.containsKey(field)) { countMap.put(field, 0); } countMap.put(field, countMap.get(field) + 1); } if (countMap.size() > repeatCount) { System.out.println("数据存在重复"); break; } } } } } 在上面的示例代码中,我们使用了 HashMap 来统计每个字段的值出现的次数。在遍历文件内容时,对于每个字段,我们首先检查是否已经存在于哈希表中,如果不存在,则将其添加到哈希表中并记录计数;如果已经存在于哈希表中,则将计数加一。最后,检查哈希表的大小是否大于预期重复次数,如果是,则输出提示信息并退出循环。
这个我写过类似的,是大文本分割,无论文本多大不经过内存,通过文件指针的方式直接分割文本。你这个要看具体是多大了,看把所有 ID 加入到内存能不能放的下,如果能放得下直接排序不就得了简单省事。如果放不下,考虑要不炫技使用文件指针的骚方式解决。要不把所有数据存入数据库,把 ID 设为唯一且不重复。