我有这个LinkedHashMap,它包含整数索引和值的对象Paire:
Map<Integer, Paire> population1 = new LinkedHashMap<>();
我的Paire类非常简单,看起来像这样:
public class Paire {
float valeur;
int index;
public Paire(LinkedList<Sommet> liste, float valeur, int index) {
this.liste = liste;
this.valeur = valeur;
this.index = index;
}
现在,我想在LinkedList中存储地图的键集,该键集按类(valeur)中的float值排序:
List<Integer> selection1 = new LinkedList(population1.keySet());
我知道我可以使用Collection.sort对值进行排序,然后如果这些值是简单的字符串或数字,则可以回溯它们各自的键,但是我在这里有点迷失了。
我觉得有没有中间列表和变量的简单快速方法。另外,我的代码的执行需要尽可能快(TSP的遗传算法)。
最佳答案
Collections.sort(selection1, new Comparator<Integer>() {
@Override public int compare(Integer key1, Integer key2) {
return Float.compare(
population1.get(key1).valeur, population1.get(key2).valeur);
}
});
但是,如果您关心速度,则
LinkedList
永远不是您的朋友。使用ArrayList
。