读代码-Pattern和FrequentPatternMaxHeap
package org.apache.mahout.fpm.pfpgrowth.fpgrowth;
public class Pattern implements Comparable<Pattern>
pattern封装了一组item,每个item的support值,整体的support值
private boolean addPattern(Pattern frequentPattern) { if (subPatternCheck) { Long index = frequentPattern.support(); if (patternIndex.containsKey(index)) { Set<Pattern> indexSet = patternIndex.get(index); boolean replace = false; Pattern replacablePattern = null; for (Pattern p : indexSet) { if (frequentPattern.isSubPatternOf(p)) { return false; } else if (p.isSubPatternOf(frequentPattern)) { replace = true; replacablePattern = p; break; } } if (replace) { indexSet.remove(replacablePattern); if (!indexSet.contains(frequentPattern) && queue.add(frequentPattern)) { indexSet.add(frequentPattern); } return false; } queue.add(frequentPattern); indexSet.add(frequentPattern); } else { queue.add(frequentPattern); Set<Pattern> patternList; if (!patternIndex.containsKey(index)) { patternList = new HashSet<Pattern>(); patternIndex.put(index, patternList); } patternList = patternIndex.get(index); patternList.add(frequentPattern); } } else { queue.add(frequentPattern); } return true; }