转载地址:https://blog.youkuaiyun.com/gnf_cc/article/details/77920225
1.Java 去除文件中的重复行
public static void main(String[] args) throws Exception {
// 需要处理数据的文件位置
FileReader fileReader = new FileReader(new File("C:\\abc\\123.txt"));
BufferedReader bufferedReader = new BufferedReader(fileReader);
Map<String, String> map = new HashMap<String, String>();
String readLine = null;
int i = 0;
while ((readLine = bufferedReader.readLine()) != null) {
// 每次读取一行数据,与 map 进行比较,如果该行数据 map 中没有,就保存到 map 集合中
if (!map.containsValue(readLine)) {
map.put("key" + i, readLine);
i++;
}
}
for (int j = 0; j < map.size(); j++) {
System.out.println(map.get("key" + j));
}
}
原来文本内容:

运行代码后:

总结:如果数据量很大的话,我们还可以把筛选出来的数据保存到一个文件中
转载地址:https://blog.youkuaiyun.com/qq_28637575/article/details/55533622
2. Java 实现文本去重
File inFile = new File("C:\\abc\\123.txt");
if (!(inFile.exists() && inFile.isFile())) {
System.out.println("---读取文件出错,请确认存在此文件---");
return;
}
String fileName = inFile.getName();
//输出文件名
File outFile = new File(
inFile.getParent()
+ "\\result_"
+ fileName
);
//用于去重的Set
Set<String> filter = new HashSet<String>();
try {
//读取数据:trim() 把起始和结尾的空格都被删除了
String content = FileUtils.readFileToString(inFile, "utf-8").trim();
String[] lines = content.split("\n");
int inLineNumber = lines.length;
//通过Set处理重复数据
for (String line : lines) {
filter.add(line);
}
int outLineNumber = filter.size();
//创建字符串生成器,节省内存开销
StringBuilder sb = new StringBuilder();
for (String line : filter) {
sb.append(line + "\n");
}
//输出文件
if (!(outFile.exists() && outFile.isFile())) {
outFile.createNewFile();
}
FileUtils.writeStringToFile(outFile,sb.toString(),"utf-8");
System.out.println("共处理了"+ inLineNumber+ "条数据"+ "\n去重"
+ (inLineNumber - outLineNumber) + "条");
} catch (IOException e) {
e.printStackTrace();
}