import it.unimi.dsi.fastutil.ints.IntList; //导入方法依赖的package包/类
private IntList generateNextOrdering(List next, IntList currentOrdering, int attribute) {
IntList result = new IntArrayList();
Int2IntMap counting = new Int2IntArrayMap();
boolean seen = false;
for (int i = 0; i < currentOrdering.size(); i++) {
if (!seen) {
if (currentOrdering.getInt(i) != attribute) {
continue;
} else {
seen = true;
}
} else {
counting.put(currentOrdering.getInt(i), 0);
for (DifferenceSet ds : next) {
if (ds.getAttributes().get(currentOrdering.getInt(i))) {
counting.put(currentOrdering.getInt(i), counting.get(currentOrdering.getInt(i)) + 1);
}
}
}
}
// TODO: Comperator und TreeMap --> Tommy
while (true) {
if (counting.size() == 0) {
break;
}
int biggestAttribute = -1;
int numberOfOcc = 0;
for (int attr : counting.keySet()) {
if (biggestAttribute < 0) {
biggestAttribute = attr;
numberOfOcc = counting.get(attr);
continue;
}
int tempOcc = counting.get(attr);
if (tempOcc > numberOfOcc) {
numberOfOcc = tempOcc;
biggestAttribute = attr;
} else if (tempOcc == numberOfOcc) {
if (biggestAttribute > attr) {
biggestAttribute = attr;
}
}
}
if (numberOfOcc == 0) {
break;
}
result.add(biggestAttribute);
counting.remove(biggestAttribute);
}
return result;
}