public ArrayList<HashMap<List<Integer>, HashSet<Integer>>> lshBucketA(HashMap<Integer, ArrayList<Integer>> sigList, HashMap<Integer, ArrayList<Integer>> semanList) {
        ArrayList<HashMap<List<Integer>, HashSet<Integer>>> lshBuckets = lshBucket(sigList);
        for (int j = 0; j < lshBuckets.size(); j++) {
            HashMap<List<Integer>, HashSet<Integer>> newlshBucket = new HashMap<>();
            for (List<Integer> sigs : lshBuckets.get(j).keySet()) {
                List<Integer> temp = CollectionOperator.deepCopy(sigs);
                HashSet<Integer> block = lshBuckets.get(j).get(sigs);
                ArrayList<HashSet<Integer>> setList = new ArrayList<>();
                for (int i = 0; i < n; i++) {
                    setList.add(new HashSet<Integer>());
                }
                for (int record : block) {
                    for (int i = 0; i < n; i++) {
                        if (semanList.get(record).get(i) == 1) {
                            setList.get(i).add(record);
                        }
                    }
                }
                HashSet<HashSet<Integer>> setSet = new HashSet<>(setList);
                ArrayList<HashSet<Integer>> pureSetList = new ArrayList<>();
                for (HashSet<Integer> set : setSet) {
                    if (!set.isEmpty()) {
                        pureSetList.add(set);
                    }
                }
                for (int i = 0; i < pureSetList.size(); i++) {
                	 temp.add(i);
                     List<Integer> temptemp=CollectionOperator.deepCopy(temp);
                     newlshBucket.put(temptemp, pureSetList.get(i));
                }
            }
            lshBuckets.set(j, newlshBucket);
//            for(List<Integer> key:lshBuckets.get(j).keySet()){
//                System.out.println(lshBuckets.get(j).get(key));
//            }
        }

        return lshBuckets;
    }