public HeaderTable copy(UNode uNode) {
   HeaderTable newTable = new HeaderTable(windowSize);
   List<UNode> distinctNodes = uNode.getDistinctNodes();
   for (HeaderTableItem item : this.headerTableItems) {
     HeaderTableItem newTableItem = newTable.addNewTableItem(item.getItemId());
     newTableItem.addProbabilityAndPrefixValue(
         item.getTotalProbability(), item.getTotalPrefixValue());
   }
   for (UNode node : distinctNodes) {
     newTable.updateHeaderTable(node, 0, 0);
   }
   return newTable;
 }
 public List<UNode> removeAndFindInfrequentNodesByPrefix(double minSupport) {
   List<UNode> nodes = new ArrayList<UNode>();
   int count = headerTableItems.size();
   for (int i = 0; i < count; i++) {
     HeaderTableItem item = headerTableItems.get(i);
     if (item.getTotalPrefixValue() < minSupport) {
       nodes.addAll(item.getNodeList());
       headerTableItems.remove(item);
       i--;
       count--;
     }
   }
   return nodes;
 }
  //    public List<HTableItemInfo> getInFrequentItemInfoByPrefix(double minSupport) {
  //        List<HTableItemInfo> result = new ArrayList<HTableItemInfo>();
  //        for (HeaderTableItem item : headerTableItems) {
  //            double prefixVal = item.getItemPrefixValue();
  //            double probabilityValue = item.getItemProbabilityValue();
  //            double miningValue = item.getMiningValue();
  //            if (prefixVal < minSupport) {
  //                HTableItemInfo hTableItemInfo = new HTableItemInfo();
  //                hTableItemInfo.setItemId(item.getItemId());
  //                hTableItemInfo.setItemPrefixValue(prefixVal);
  //                hTableItemInfo.setItemProbabilityValue(probabilityValue);
  //                hTableItemInfo.setMiningProbability(miningValue);
  //                result.add(hTableItemInfo);
  //            }
  //        }
  //        return result;
  //    }
  //
  //    public List<HTableItemInfo> getFrequentItemInfoByPrefix(double minSupport) {
  //        List<HTableItemInfo> result = new ArrayList<HTableItemInfo>();
  //        for (HeaderTableItem item : headerTableItems) {
  //            double prefixVal = item.getItemPrefixValue();
  //            double probabilityValue = item.getItemProbabilityValue();
  //            double miningValue = item.getMiningValue();
  //            if (prefixVal >= minSupport) {
  //                HTableItemInfo hTableItemInfo = new HTableItemInfo();
  //                hTableItemInfo.setItemId(item.getItemId());
  //                hTableItemInfo.setItemPrefixValue(prefixVal);
  //                hTableItemInfo.setItemProbabilityValue(probabilityValue);
  //                hTableItemInfo.setMiningProbability(miningValue);
  //                result.add(hTableItemInfo);
  //            }
  //        }
  //        return result;
  //    }
  //
  //    public List<HTableItemInfo> getFrequentItemInfoByMiningValue(double minSupport) {
  //        List<HTableItemInfo> result = new ArrayList<HTableItemInfo>();
  //        for (HeaderTableItem item : headerTableItems) {
  //            double prefixVal = item.getItemPrefixValue();
  //            double probabilityValue = item.getItemProbabilityValue();
  //            double miningValue = item.getMiningValue();
  //            if (miningValue >= minSupport) {
  //                HTableItemInfo hTableItemInfo = new HTableItemInfo();
  //                hTableItemInfo.setItemId(item.getItemId());
  //                hTableItemInfo.setItemPrefixValue(prefixVal);
  //                hTableItemInfo.setItemProbabilityValue(probabilityValue);
  //                hTableItemInfo.setMiningProbability(miningValue);
  //                result.add(hTableItemInfo);
  //            }
  //        }
  //        return result;
  //    }
  //
  //    public List<HTableItemInfo> getInFrequentItemInfoBySupport(double minSupport) {
  //        List<HTableItemInfo> result = new ArrayList<HTableItemInfo>();
  //        for (HeaderTableItem item : headerTableItems) {
  //            double prefixVal = item.getItemPrefixValue();
  //            double probabilityValue = item.getItemProbabilityValue();
  //            double miningValue = item.getMiningValue();
  //            if (probabilityValue < minSupport) {
  //                HTableItemInfo hTableItemInfo = new HTableItemInfo();
  //                hTableItemInfo.setItemId(item.getItemId());
  //                hTableItemInfo.setItemPrefixValue(prefixVal);
  //                hTableItemInfo.setItemProbabilityValue(probabilityValue);
  //                hTableItemInfo.setMiningProbability(miningValue);
  //                result.add(hTableItemInfo);
  //            }
  //        }
  //        return result;
  //    }
  //
  //    public List<HTableItemInfo> getFrequentItemInfoBySupport(double minSupport) {
  //        List<HTableItemInfo> result = new ArrayList<HTableItemInfo>();
  //        for (HeaderTableItem item : headerTableItems) {
  //            double prefixVal = item.getItemPrefixValue();
  //            double probabilityValue = item.getItemProbabilityValue();
  //            double miningValue = item.getMiningValue();
  //            if (probabilityValue >= minSupport) {
  //                HTableItemInfo hTableItemInfo = new HTableItemInfo();
  //                hTableItemInfo.setItemId(item.getItemId());
  //                hTableItemInfo.setItemPrefixValue(prefixVal);
  //                hTableItemInfo.setItemProbabilityValue(probabilityValue);
  //                hTableItemInfo.setMiningProbability(miningValue);
  //                result.add(hTableItemInfo);
  //            }
  //        }
  //        return result;
  //    }
  //
  //    public List<HTableItemInfo> getInFrequentItemInfoByMiningValue(double minSupport) {
  //        List<HTableItemInfo> result = new ArrayList<HTableItemInfo>();
  //        for (HeaderTableItem item : headerTableItems) {
  //            double prefixVal = item.getItemPrefixValue();
  //            double probabilityValue = item.getItemProbabilityValue();
  //            double miningValue = item.getMiningValue();
  //            if (miningValue < minSupport) {
  //                HTableItemInfo hTableItemInfo = new HTableItemInfo();
  //                hTableItemInfo.setItemId(item.getItemId());
  //                hTableItemInfo.setItemPrefixValue(prefixVal);
  //                hTableItemInfo.setItemProbabilityValue(probabilityValue);
  //                hTableItemInfo.setMiningProbability(miningValue);
  //                result.add(hTableItemInfo);
  //            }
  //        }
  //        return result;
  //    }
  public List<HTableItemInfo> getHeaderInfo() {
    List<HTableItemInfo> result = new ArrayList<HTableItemInfo>();
    for (HeaderTableItem item : headerTableItems) {
      HTableItemInfo hTableItemInfo = new HTableItemInfo();

      double prefixVal = item.getTotalPrefixValue();
      double probabilityValue = item.getTotalProbability();
      double miningValue = item.getMiningValue();

      hTableItemInfo.setItemId(item.getItemId());
      hTableItemInfo.setItemPrefixValue(prefixVal);
      hTableItemInfo.setItemProbabilityValue(probabilityValue);
      hTableItemInfo.setMiningProbability(miningValue);
      result.add(hTableItemInfo);
    }
    return result;
  }