2017-06-28 3 views

Répondre

1

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.

+0

Merci pour l'astuce. –

0

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; 
     } 

    } 
+0

C'est ce que j'ai essayé, malheureusement cela n'a pas fonctionné. –

+0

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! –