En Java, en utilisant le comparateur, est-il possible de trier les éléments aux positions spécifiques dans une liste? Si c'est le cas, comment? Exemple: la liste {1,2,3,4,10,6,7,8}
index des éléments à trier {3,4,7}
dans l'ordre décroissant, le résultat serait {1,2,3,10,8,6,7,4}
.tri des éléments spécifiques dans la liste en utilisant le comparateur
Répondre
Vous connaissez probablement les positions spécifiques à l'avance? Si c'est le cas, créez une nouvelle liste composée des éléments que vous souhaitez trier, triez la liste, puis remplacez les éléments de la liste d'origine par votre liste triée, un élément à la fois.
Quelque chose comme ceci fonctionnerait? Vous construisez le comparateur avec une liste des valeurs et la liste des index à trier:
private static class MyComparator implements Comparator<Integer>{
private ArrayList<Integer> indexes;
private ArrayList<Integer> vals;
public MyComparator(ArrayList<Integer> indexes, ArrayList<Integer> vals){
this.indexes = indexes;
this.vals = vals;
}
@Override
public int compare(Integer arg0, Integer arg1) {
if(indexes.contains(vals.indexOf(arg0)) && indexes.contains(vals.indexOf(arg1))){
return Integer.compare(arg1, arg0);
}
return 0;
}
}
C'est ce que j'ai essayé, malheureusement cela n'a pas fonctionné. –
J'ai eu un résultat qui ressemblait à ce que vous attendiez. Je suppose que j'aurais dû essayer votre exemple spécifique parce que je vois que c'est différent. Pardon! –
Merci pour l'astuce. –