for(int k=0;k<=lenDiffThresh;k++){
int idx = features[i].size()-lenDiffThresh/2+k;
if(idx<0||idx>=lenGroup.size())
continue;
TIntHashSet g = lenGroup.get(idx);
TIntIterator it = g.iterator();
for(int t=g.size();t>0;t--){
int j = it.next();
if(dup[j]||j==i){
continue;
}
CalcSimilarity cs = new CalcSimilarity(i,j);
total++;
pool.execute(cs);
}
}
}
while(jobs.get()<total){
Thread.sleep(10);
}
pool.shutdown();
HashMap<Integer,ArrayList<Integer>> map = new HashMap<Integer,ArrayList<Integer>> ();
for(int id1=0;id1<docs.size();id1++){
if(!dup[id1]){
ArrayList<Integer> li = new ArrayList<Integer>();
li.add(id1);
map.put(id1, li);
}
}
for(int id1=0;id1<docs.size();id1++){
if(dup[id1]){
int root = findroot(id1);
map.get(root).add(id1);
}
}
TreeSet<DocSim> mapp =new TreeSet<DocSim>();
Iterator<Entry<Integer, ArrayList<Integer>>> it = map.entrySet().iterator();
while(it.hasNext()){
Entry<Integer, ArrayList<Integer>> el = it.next();
DocSim d = new DocSim(el.getValue());
mapp.add(d);
}
return mapp;
}