2010-11-25 5 views

Répondre

3

Il convient de noter que vous ne pouvez pas ajouter/retirer d'un Arrays.asList(), mais vous pouvez le faire.

List<Integer> list = Arrays.asList(2, 5, 1, 8, 6); 
int idx = list.indexOf(1); 
if (idx>=0) list = list.subList(0, idx); 
+0

agréable et facile waaaaaay !! :-) – user472221

3
List<Integer> list = Arrays.asList(2, 5, 1, 8, 6); 
boolean remove = false; 
Iterator<Integer> it = list.iterator(); 
while (it.hasNext() { 
    if (!remove && it.next() == 1) { 
     remove = true; 
    } 
    if (remove) { 
     it.remove(); 
    } 
} 
0
list = list.subList(0, 1); 
0

La façon la plus efficace pour éliminer les éléments de ArrayList est de les retirer de la fin de la liste. Chaque élément que vous supprimez au milieu de la liste entraînera tous ces derniers éléments étant moved to the left. Si la liste est volumineuse, cela peut entraîner un problème de performances important.

Cependant, dans votre cas, il vaudrait peut-être mieux créer un nouveau sublist avec les deux autres éléments.

0

Une autre façon de le faire serait de simplement faire sortir les éléments de la fin du List jusqu'à ce que nous ayons fait apparaître l'élément de départ. Chaque élément peut être déclenché en O (1), donc l'opération entière est O (n).

class Main{ 
    private static List<Integer> inputs = new ArrayList<Integer>(); 

    public static void main(String args[]){ 
     for (int x: new int[]{2,5,1,8,6}) 
      inputs.add(x); 
     System.out.println(inputs); 
     int start=inputs.indexOf(1); 
     if (start>=0){ //check if there is a 1 in input 
      while (inputs.size()>start) 
       inputs.remove(inputs.size()-1); 
     } 
     System.out.println(inputs); 

    } 
} 
Questions connexes