Сначала создайте другую реализацию компаратора, которая сравнивает только по типу продукта. Тогда назовите это:
Collections.sort(engineList, new CompoundComparator(productTypeCmp, percentageCmp));
Вот реализация составного компаратора, он делегирует сравнение переданным компараторам в том порядке, в котором они были переданы.
class CompoundComparator implements Comparator<Engine>{
private List<Comparator> comparators;
public CompoundComparator(Comparator<Engine> ... comparators){
this.comparators = Arrays.asList(comparators);
}
public int compare(Engine o1, Engine o2){
int cmp = 0;
Iterator cmpIter = comparators.iterator();
while(cmp == 0 && cmpIter.hasNext()){
cmp = cmpIter.next().compare(o1, o2);
}
return cmp;
}
}
Предполагая, что объекты имеют тип Engine.