代码改变世界

”万能查重器“小程序

2012-05-04 22:15  Lves Li  阅读(221)  评论(0编辑  收藏  举报
//今天组长让我写一个查重的的程序来给一个词库查重 把相同的删除
//一开始我绞尽脑汁想用嵌套的for循环怎么都有bug 原因是&&和&的理解错误
//后来我想到了用Map集合 应为它的键值不可能相同 这样就轻松解决了重复的问题 恩恩哈哈········
//Map <String,String> pp=new HashMap<String,String>; 他就是一个很好的查重的机器啊
 
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Shangchu {

	/**
	 * @param args
	 */
	BufferedReader br = null;
	StringBuffer sb1 = new StringBuffer();
	StringBuffer sb2 = new StringBuffer();
	public PrintWriter pw=null;
	public Map<String,String> ciku=new HashMap<String,String>();
	public List<String> hanzi=new ArrayList<String>();
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Shangchu sc=new Shangchu();		
		sc.chaChong("pinyinciku.txt");
	}
	
	public void chaChong(String txt) {
		int s=0;
		try {
			br= new BufferedReader(new FileReader(txt));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("文件读取失败");
		}
		try {
			while((s = br.read()) != -1)
			{
				if(s != '\n')
						if(!((s < 'a'||s>'z')&& (s != ' ')&&(s != '\'')))
						{
							sb1.append((char)s);					//添加拼音
						
						}
						else 
						{
								sb2.append((char)s);				//添加汉字
						}				    
				else
				{		
					ciku.put(sb2.toString(), sb1.toString());						
					sb1.delete(0,sb1.capacity()-1);											
					sb2.delete(0,sb2.capacity()-1);
				}	
			
			}
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
			System.out.println("字符串添加失败");
		}
		finally 
		{
			if (br!=null)
			{
				try {
					br.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
					System.out.println("br关闭失败");
				}
			}
			
		}
		try {
			pw=new PrintWriter(new FileWriter(new File ("a.txt")));
			Set<Map.Entry<String,String>> entryset=ciku.entrySet();
			   Iterator<Map.Entry<String,String>> its =entryset.iterator();
			   while (its.hasNext())
			   {
			    Map.Entry<String,String> mm=its.next();
			    String hanzi= mm.getKey();
			   
			    String pinyin=mm.getValue();
			    pw.append(pinyin);
			    pw.append(hanzi);
			    pw.append('\n');
			    System.out.println(pinyin+" ````` "+hanzi);
			   }
			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		   finally {
				if (pw!=null)
				{
					pw.close();
				}
		
			}
		

	}
}