public static void getCandidate2(ArrayList<Integer> candidate,
			ArrayList<Integer> not, int current) {
		int curdeg = oneLeap.get(current).size();
		HashSet<Integer> ca = new HashSet<Integer>();
		hs.clear();
		int tmpdeg = 0;
		HashSet<Integer> oneadj;
		if((oneadj=cacheTwoleap.get(current))!=null){
			hs = oneadj;
		}else{
			oneadj = oneLeap.get(current);
			hs.addAll(oneadj);
			for (Integer i : oneadj) {
				hs.addAll(oneLeap.get(i));
			}
		}
		
		for (Integer i : hs) {
			tmpdeg = oneLeap.get(i).size();
			if (tmpdeg > curdeg) {
				not.add(i);
			} else if (tmpdeg < curdeg) {
				ca.add(i);
			} else {
				if (i > current) {
					ca.add(i);
				} else if (i < current) {
					not.add(i);
				}// 相等的话即current本身,不需要加入任何集合,不处理
			}
		}
		// }
		candidate.addAll(ca);
		
		//过滤缓存,,防止两跳缓存过大
		Iterator<Map.Entry<Integer, HashSet<Integer> >>en=cacheTwoleap.entrySet().iterator();
		while(en.hasNext()){
			if(!hs.contains(en.next().getKey())){
				en.remove();
			}
		}
	}