去除重复

转载地址: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();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值