Browse Source

广告主加载到内存方法优化

jun.zhou 9 years ago
parent
commit
1e88426b63
1 changed files with 19 additions and 7 deletions
  1. 19 7
      src/main/java/com/cloudcross/ssp/loader/AdvertiserLoader.java

+ 19 - 7
src/main/java/com/cloudcross/ssp/loader/AdvertiserLoader.java

@@ -50,17 +50,26 @@ public class AdvertiserLoader {
 		Map<Long,List<Advertiser>> agentKeyMap = new HashMap<Long, List<Advertiser>>();
 		Map<Long,List<Advertiser>> agentKeyMap = new HashMap<Long, List<Advertiser>>();
 		Set<Long> agentIdSet = setAgentIdSet();
 		Set<Long> agentIdSet = setAgentIdSet();
 		Iterator<Long> it = agentIdSet.iterator();
 		Iterator<Long> it = agentIdSet.iterator();
-		while(it.hasNext()){
-			Long agentId = it.next();
-			List<Advertiser> advList = new ArrayList<Advertiser>();
-			for(int i=0;i<ADVERTISER_LIST.size();i++){
-				if(agentId.equals(ADVERTISER_LIST.get(i).getAgentId())){
-					advList.add(ADVERTISER_LIST.remove(i));
-					i--;
+		Long agentId = null;
+		List<Advertiser> advList = null;
+		while(it.hasNext()){//外层循环,遍历set集合
+			agentId = it.next();
+			advList = new ArrayList<Advertiser>();
+			Advertiser advertiser = null;
+			
+			Iterator<Advertiser> itr = ADVERTISER_LIST.iterator();
+			while(itr.hasNext()){//内层循环,遍历ADVERTISER_LIST,删除已经匹配的广告主集合
+				 advertiser = itr.next();
+				if(agentId.equals(advertiser.getAgentId())){//匹配代理商
+					advList.add(advertiser);//将匹配代理商的广告主放到集合中
+					itr.remove();//移除匹配好的广告主
 				}
 				}
 			}
 			}
 			agentKeyMap.put(agentId, advList);
 			agentKeyMap.put(agentId, advList);
 		}
 		}
+		for(Map.Entry<Long, List<Advertiser>> entry:agentKeyMap.entrySet()){
+			log.debug("key="+entry.getKey()+":value="+entry.getValue());
+		}
 		return agentKeyMap;
 		return agentKeyMap;
 	}
 	}
 	
 	
@@ -83,6 +92,9 @@ public class AdvertiserLoader {
 			str = str + list.get(count-1).getId();
 			str = str + list.get(count-1).getId();
 			AGENTID_ADVERTISERID_MAP.put(l, str);
 			AGENTID_ADVERTISERID_MAP.put(l, str);
 		}
 		}
+		for(Map.Entry<Long,String>entry:AGENTID_ADVERTISERID_MAP.entrySet()){
+			log.debug("key="+entry.getKey()+":value="+entry.getValue());
+		}
 	}
 	}
 	
 	
 	/**
 	/**