package doser.algorithms;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import doser.general.HelpfulMethods;
/**
* Majority vote methods for arbitrary types
*
* @author Stefan Zwicklbauer
*
*/
public final class MajorityVoteAlgorithm<K extends Comparable<? super K>> {
public MajorityVoteAlgorithm() {
super();
}
public Map.Entry<K, Integer> getMajorityType(final List<K> typeList) {
final List<Map.Entry<K, Integer>> list = this
.getMajorityTypes(typeList);
Map.Entry<K, Integer> res = null;
if (!list.isEmpty()) {
res = list.get(0);
}
return res;
}
public List<Map.Entry<K, Integer>> getMajorityTypes(final List<K> list) {
final Map<K, Integer> hash = new HashMap<K, Integer>();
for (final K k : list) {
if (hash.containsKey(k)) {
Integer number = hash.get(k);
hash.put(k, ++number);
} else {
hash.put(k, 1);
}
}
return HelpfulMethods.sortByValue(hash);
}
}