数据去重程序
来源:互联网 发布:linux ftp添加用户 编辑:程序博客网 时间:2024/04/29 00:46
1 . 想要去去重的数据的格式:
field1 field2
第一行 A B
第二行 A B
第三行 B A
像第一行和第二行算重复,并且第一行和第三行也算重复,需要去重,将第二行和第三行删掉,留下第一行数据。
输入数据为excel文档格式,要去重的两个列是drug_name_id和inter_drug_name_id
2 . 处理思路
(1)先将excel中的内容复制的txt文本中,并且把第一行删除掉(避免处理中的麻烦)
(2)首先用subString截取到第一行中的drug_name_id(用a代表)和inter_drug_name_id(用b代表)的数据。将字符 串a和b拼接成ab,并且将之存到set集合(不可以放重复数据)中,然后逐行循环每一行,每行都要做这样的处 理:将b和a拼接成ba,看set集合是否包含ba,如果包含ba,则不需要输出这行数据,如果不包含ba,然后 做如下判断,将a和b拼接成ab,看set集合中是否包含ab,如果不包含ab,则将ab放到集合中,并且将这行数据输 出到文本,直到所有行处理完毕。
3 . 具体java代码:
package QuChong;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import java.io.InputStreamReader;import java.util.HashSet;import java.util.Set;public class QuChong { public BufferedReader createBr(String pathname){ try{ //防止文件建立或读取失败,用catch捕获错误并打印 //读取txt文件 //这是绝对路径 File file1 = new File(pathname); //要读取以上路径的txt文件 //建立一个输入流对象 InputStreamReader reader = new InputStreamReader(new FileInputStream(file1),"GBK"); //建立一个对象,它将文件内容转成计算机能读懂的语言 BufferedReader br = new BufferedReader(reader); return br; }catch(Exception e){ e.printStackTrace(); } return null; } public BufferedWriter createBw(String pathname){ try{ //写入txt文件,如果是写入的内容是string类型的字符串,则用这个方法 File file = new File(pathname); //如果文本文件不存在则创建它 if(file.exists() == false){ file.createNewFile(); //重新实例化 file = new File(pathname); } FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); return bw; }catch(Exception e){ e.printStackTrace(); } return null; } public static void main(String[] args) { try{ String pathname = "D:\\work\\zpy\\drug_inter去重过程\\drug_inter.txt"; String pathname1 ="D:\\work\\zpy\\drug_inter去重过程\\result1.txt"; BufferedReader br = new QuChong().createBr(pathname); BufferedWriter bw = new QuChong().createBw(pathname1); String line = ""; line = br.readLine(); //System.out.println(line); bw.write(line+"\r\n"); //获取drug_name_id和inter_drug_name_id String drug_name_id = line.substring(line.indexOf("DB"),line.indexOf("DB")+7); String inter_drug_name_id = line.substring(line.lastIndexOf("DB"),line.lastIndexOf("DB")+7); //set集合不可以放重复数据 Set set = new HashSet(); //将第一条数据放入set集合中 set.add(drug_name_id+inter_drug_name_id); //System.out.println(set); line = br.readLine(); //一次读取一行数据 System.out.println(line); while(line != null){ String drug_name_id1 = line.substring(line.indexOf("DB"),line.indexOf("DB")+7); String inter_drug_name_id1 = line.substring(line.lastIndexOf("DB"),line.lastIndexOf("DB")+7); //两个字段交叉相等的情况 boolean b1 = set.contains(inter_drug_name_id1+drug_name_id1); //两个字段对应相等的情况 boolean b2 = set.contains(drug_name_id1+inter_drug_name_id1); if(b1 == true){ //这条数据与上一条重复,不需要将其输出。 }else{ if(b2 == true){ //这条数据与上一条重复,不需要将其输出。 }else{ //这条数据与上一条不重复,需要将其输出到文本中 set.add(drug_name_id1+inter_drug_name_id1); //System.out.println(set); bw.write(line + "\r\n"); } } line = br.readLine(); //一次读取一行数据 } System.out.println("size " + set.size()); // 把缓存区内容压入文件 bw.flush(); // 最后记得关闭文件 bw.close(); br.close(); }catch(Exception e){ e.printStackTrace(); } } }
- 数据去重程序
- MapReduce数据去重程序实验
- Hadoop MapReduce数据去重程序
- 我的hadoop初学程序------简单数据去重--------Deduplication
- 编写mapreduce程序实例——数据去重
- 词典去重数据
- hadoop-数据去重
- hive 去重数据
- SQL数据去重
- 数据去重
- 数据去重
- mysql数据去重
- Hadoop 数据去重
- 数据库数据去重
- SQL数据去重
- 数据去重
- Hive数据去重
- Hive数据去重
- [Java]hashCode和equals方法的比较
- 解决Android Device Chooser 找不到设备问题
- 线段树区间更新——POJ 2528
- Mac os Android 源码开发环境搭建
- 【待深入】莫队算法
- 数据去重程序
- Android中dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的理解
- Android sdk环境变量的设置
- ffmpeg参数中文详细解释
- 直接插入排序(Straight Insertion Sort)
- Asp.Net MVC 常用开发方式之EF Code First
- 关于android开发中涉及到的java知识:面向对象(四)
- Quartus II的常见错误分析
- 人生路漫漫,如何走下去