我有这个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

10-06 09:10