private void aprioriGen(ArrayList<NonDuplicateArrayList<String>> frequentItemSet, 
							HashMap<NonDuplicateArrayList<String>, Integer> candidates,
							int iteration){
		candidates.clear();
		for (int i = 0; i < frequentItemSet.size(); i++){
			for (int j = i + 1; j < frequentItemSet.size(); j++){
				// NonDuplicateArrayList<Integer> tempSet = new NonDuplicateArrayList<Integer>(frequentItemSet.get(i));
				NonDuplicateArrayList<String> tempSet = new NonDuplicateArrayList<String>(frequentItemSet.get(i));
				tempSet.retainAll(frequentItemSet.get(j));
				if (tempSet.size() == iteration - 1){
					// tempSet = new NonDuplicateArrayList<Integer>(frequentItemSet.get(i));
					tempSet = new NonDuplicateArrayList<String>(frequentItemSet.get(i));
					tempSet.addAll(frequentItemSet.get(j));
					candidates.put(tempSet, 0);
				}
			}
		}
		// HashSet<NonDuplicateArrayList<Integer>> toRemoveSet = new HashSet<NonDuplicateArrayList<Integer>>();
		HashSet<NonDuplicateArrayList<String>> toRemoveSet = new HashSet<NonDuplicateArrayList<String>>();
		// for (Entry<NonDuplicateArrayList<Integer>, Integer> entry: candidates.entrySet()){
		for (Entry<NonDuplicateArrayList<String>, Integer> entry: candidates.entrySet()){
			// for (NonDuplicateArrayList<Integer> set: getKSubset(entry.getKey(), iteration)){
			for (NonDuplicateArrayList<String> set: getKSubset(entry.getKey(), iteration)){
				if (!frequentItemSet.contains(set)){
					toRemoveSet.add(set);
					break;
				}
			}
		}
		// for (NonDuplicateArrayList<Integer> set: toRemoveSet)
		for (NonDuplicateArrayList<String> set: toRemoveSet)
			candidates.remove(set);
	}