java字典中使用三目运算设定key初值
2016-03-18 00:00
507 查看
//GuoLiQuDaoNewAccountPayMoney.java import java.util.Calendar; import java.util.HashMap; import java.util.Iterator; import java.util.Date; import java.util.Set; import java.util.HashSet; import java.util.Arrays; import java.text.SimpleDateFormat; import java.io.File; import java.io.FileReader; import java.io.BufferedReader; public class GuoLiQuDaoNewAccountPayMoney{ @SuppressWarnings("unchecked") public static HashMap<String, Set> createQudaoAccountDict(File file_acc, Date start, Date end) throws Exception{ HashMap<String, Set> qudaoAccountDict = new HashMap<String, Set>(); String temp = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); if(file_acc.isFile()){ BufferedReader br = new BufferedReader(new FileReader(file_acc)); while((temp=br.readLine())!= null){ try{ String [] line = temp.split("\t"); Date stat_period = sdf.parse(line[0]); String account = line[1]; String plat = line[4]; if (stat_period.getTime()>=start.getTime() && stat_period.getTime() < end.getTime()){ //System.out.println(sdf.format(start.getTime())+"\t"+line[0]+"\t"+sdf.format(end.getTime())); if(qudaoAccountDict.containsKey(plat)){ qudaoAccountDict.get(plat).add(account); }else{ //Set<String> tmp = new HashSet<String>(Arrays.asList(account)); //tmp.add(account); qudaoAccountDict.put(plat, new HashSet<String>(Arrays.asList(account))); 7fe0 } } }catch(Exception e){ System.out.println(temp); } } } Iterator it = qudaoAccountDict.keySet().iterator(); while(it.hasNext()){ //System.out.println(it.next()+"\t"+qudaoAccountDict.get(it.next())); String st = (String) it.next(); //System.out.println(st); } return qudaoAccountDict; } private static HashMap<String, String> createUidAccountDict(File FilePay, HashMap<String, Set> QuDaoDict) throws Exception{ HashMap<String, String> uidaccountdict = new HashMap<String, String>(); String temp = null; if (FilePay.isFile()){ BufferedReader br = new BufferedReader(new FileReader(FilePay)); while((temp=br.readLine())!=null){ try{ String[] line = temp.split("\t"); String uid = line[0]; String account = line[1]; //System.out.println(line.length); //String qudao = line[3]; //if (QuDaoDict.containsKey(qudao)){ // Set accset = QuDaoDict.get(qudao); // if (accset.contains(account)){ // uidaccountdict.put(uid, qudao); // //}else{ // // System.out.println(qudao); // } //} uidaccountdict.put(uid, account); }catch(Exception e){ System.out.println(temp); } } } Iterator itu = uidaccountdict.values().iterator(); while(itu.hasNext()){ String mm = (String) itu.next(); // System.out.println(itu.next()); // if(") } return uidaccountdict; } @SuppressWarnings("unchecked") private static void outPutFinalPayMain(File FilePay, Date Start, Date End, HashMap<String, String> UidAccountDict, HashMap<String, Set> QuDaoAccDict, Set<String> Totalset) throws Exception{ //HashMap<String, Integer> qudaopaydict = new HashMap<String, Integer>(); HashMap<String, Integer> acctpaydict = new HashMap<String, Integer>(); String temp = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); if(FilePay.isFile()){ BufferedReader br = new BufferedReader(new FileReader(FilePay)); while((temp=br.readLine())!=null){ String[] line = temp.split("\t"); int money = Integer.parseInt(line[6]); Date ordertime = sdf.parse(line[7]); String plat = line[8]; String uid = line[13]; String account = UidAccountDict.get(uid); if (account==null){ System.out.println(uid+"\t"+line[7]+"\t"+plat); } if (UidAccountDict.containsKey(uid) && ordertime.getTime() >= Start.getTime() && ordertime.getTime() < End.getTime() && !plat.equals("admin_test") && Totalset.contains(account)){ String stringtime = sdf1.format(ordertime.getTime()); //if (qudao == "apple"){ // System.out.println(stringtime+"\t"+qudao);} //if (qudaopaydict.containsKey(qudao)){ // int num = qudaopaydict.get(qudao); // qudaopaydict.put(qudao, num+money); //}else{ // qudaopaydict.put(qudao, money); //if (acctpaydict.containsKey(account)){ // int num = acctpaydict.get(account); // acctpaydict.put(account, num+money); //}else{ // acctpaydict.put(account, money); acctpaydict.put(account,(acctpaydict.get(account)==null)? money : (int)acctpaydict.get(account)+money); //三目运算 } } } Iterator it = QuDaoAccDict.keySet().iterator(); while(it.hasNext()){ String qudao = (String)it.next(); int xinzeng = QuDaoAccDict.get(qudao).size(); int pay = 0; Set xinset = new HashSet(QuDaoAccDict.get(qudao)); Iterator itset = xinset.iterator(); while(itset.hasNext()){ String acct = (String) itset.next(); //if (acctpaydict.containsKey(acct)){ // pay = pay + (int)acctpaydict.get(acct); //}else{ // pay = pay +0; //} pay = pay + ((acctpaydict.get(acct)==null)? 0 : (int)acctpaydict.get(acct));//三目运算 //if (qudaopaydict.containsKey(qudao)){ // pay = pay + qudaopaydict.get(qudao); } System.out.println(qudao + "\t"+ xinzeng +"\t"+pay); } Iterator itval = acctpaydict.values().iterator(); int mony = 0; //while(itval.hasNext()){ // mony = mony + (int)itval.next(); //} for(int intval:acctpaydict.values()){ mony = mony + intval; } System.out.println("mony"+acctpaydict.size()+"\t"+mony); } @SuppressWarnings("unchecked") public static void main(String[] args) throws Exception{ String path = "/home/data/superhero/"; File file_pay = new File(path+"/paylog/paylog_"+args[0]+"_all"); File file_info = new File(path + "/log_redis/total_info_"+args[0]); File file_acc = new File(path + "/reg_act/dw_superhero_newaccount_"+args[0]+"_all"); String first = "20141001"; String last = "20150401"; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); Date date1 = sdf.parse(first); Date date2 = sdf.parse(last); System.out.println(date1 +"\t"+date2); HashMap<String, Set> qudaoAccountDict = new HashMap<String, Set>(); qudaoAccountDict = createQudaoAccountDict(file_acc, date1, date2); Set<String> totalset = new HashSet<String>(); Iterator iter = qudaoAccountDict.values().iterator(); while(iter.hasNext()){ totalset.addAll((Set)iter.next()); } HashMap<String, String> uidaccountdict = new HashMap<String, String>(); uidaccountdict = createUidAccountDict(file_info, qudaoAccountDict); outPutFinalPayMain(file_pay, date1, date2, uidaccountdict, qudaoAccountDict, totalset); System.out.println(qudaoAccountDict.size()); Set valset = new HashSet(uidaccountdict.values()); System.out.println(valset.size()); } }
相关文章推荐
- java使用map封装返回多值
- 使用java对各档人数进行汇总
- 安装多个版本的jdk
- Java 日志管理最佳实践
- Java注意事项(基础细节)
- java数组算法的相关实现
- java栈算法实现单词逆序输出
- FastDFS的安装,配置与使用(java)
- Java爬取CSDN博客
- SpringMVC注解总结
- SpringMVC中传参乱码解决方案
- 把java 工程转为 maven 工程
- myeclipse eclipse 安装aptana插件
- java synchronized详解
- SpringMVC 基本注解[@Resource,@Autowired,@Component]
- win下配置eclipse使其能像MyEclipse一样打开当前文件所在目录
- java开发环境配置
- Eclipse插件之 Activiti Designer
- FastDFS的安装,配置与使用(java)
- Java_在其他类中调用ToolTipManager的方法,ex.调用ToolTipManager的setInitialDelay()方法