public ObjectArrayList findTiersFor(int varName1, int varName2) { long key = varName1 < varName2 ? (long)varName1 << 21 | varName2 : (long)varName2 << 21 | varName1; return (ObjectArrayList) tiersHash2.get(key); }
public ITier findTierFor(ITripletPermutation tripletPermutation) { long key = tripletPermutation.canonicalHashCode(); // O(1) ITier targetTier = (ITier) tiersHash3.get(key); return targetTier; }
private void addTiersHash2(ITier tier, int varName1, int varName2) { long key = varName1 < varName2 ? (long)varName1 << 21 | varName2 : (long)varName2 << 21 | varName1; ObjectArrayList tiers = (ObjectArrayList) tiersHash2.get(key); if (tiers == null) { tiersHash2.put(key, new ObjectArrayList(new ITier[] {tier})); } else { tiers.add(tier); } }
private void addVarName(int varName) { LongArrayList pairs = fullIndex.getPairs(varName); if (pairs == null) { // There is no any pairs that contain this varName. // No need to add it to the index. return; } for (int i = 0; i < pairs.size(); i++) { long key = pairs.getQuick(i); if (!pairsToTiersIndex.containsKey(key)) { pairsToTiersIndex.put(key, fullIndex.pairsToTiersIndex.get(key)); } } } }
LongArrayList tiers = (LongArrayList) pairsToTiersIndex.get(key);