您的位置:首页 > 编程语言 > Java开发

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());

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: