Votre question

supprimer un element d'un array list

Tags :
  • Arraylist
  • Java
  • element
  • suppression
  • Programmation
Dernière réponse : dans Programmation
3 Mars 2012 19:37:27

Salut ,
en effet je veux supprimer un element de mon arraylist (cet element est un array list) mais visiblement ca ne supprime rien .voila ce que j'ai fait:
Integer tab[]= new Integer []{5,2,2,2,27};
if(result.contains(tab)) { result.remove(tab);
result c'st mon array list : public static ArrayList<Integer[] > Result = new ArrayList<Integer[]>();
merci d'avance.

Autres pages sur : supprimer element array list

a c 232 L Programmation
4 Mars 2012 12:39:36

Salut,

C'est certainement parce que tu initialises un 2ème tableau.
  1. Integer tab1[] = new Integer[] { 5,2,2,2,27 };
  2. Integer tab2[] = new Integer[] { 5,2,2,2,27 };
  3.  
  4. // et dans ce cas, tab1 != tab2
4 Mars 2012 19:56:24

Salut,
-je ne comprend ps ,il est ou le deuxieme tableau,je n'ai q'un seul tableu tab :
Integer tab[]= new Integer []{5,2,2,2,27};
-et un array list Resutlt:
public static ArrayList<Integer[] > Result = new ArrayList<Integer[]>();
-et biensure j'ai mit ca:
Result.add(tab);
-et apres j'ai tester l'existance l'element pour le supprimer mais rien ne se passe.
Merci de me repndre tres rapidement car je suis perdue.
Contenus similaires
a c 232 L Programmation
4 Mars 2012 22:06:17

Ah pardon, je pensais que tu avais 2 tableaux.

Fais voir ton code en entier
4 Mars 2012 22:16:46

import java.util.ArrayList;


public class tstarray {
public static ArrayList<Integer[] > Result = new ArrayList<Integer[]>();
public static ArrayList<Integer[] > Result2 = new ArrayList<Integer[]>();
public static ArrayList<Integer[] > redandance (ArrayList<Integer[] > result){
Integer tab[]= new Integer []{5,2,2,2,27};
if(result.contains(tab)) { result.remove(result.indexOf(tab));System.out.println("ccccc");}
System.out.println(result.contains(tab));
return Result;


}


public static void main(String[] args) {
// TODO Auto-generated method stub
int mat[][]={{5,2,2,2,27},{111,158,66,66,88},{111,158,66,66,2},{5,2,2,2,27},{17,3,7,11,11},{17,17,4,99,99},{111,158,66,66,88},{17,17,4,99,99}};
Integer tab[]= {5,2,2,2,27};
Integer tab2[]={111,158,66,66,88};
int y=2,z=8;
// Result.add(y);
//Result.add(z);
Integer t3[]=new Integer[5];
ArrayList<Integer []>t2 = new ArrayList<Integer[]>();
for(int i=0;i<mat.length;i++)
{for (int j=0;j<5;j++)
{t3[j]=mat[j];
//if(i==0) System.out.print(t3[j]);
}

Result.add(t3);
t3=new Integer[5];
// t=new ArrayList<Integer>();;
}

int p=0,m=0;
if(Result.contains(8)) { //Result.remove(tab);
System.out.println("ccccc");}
//Result.add(t2);
//t2=testmat.redandanceMatrice(mat);
Result2=redandance (Result);
while(p<Result.size())
{
for(m=0;m < Result2.get(p).length;m++)
{ System.out.print(Result2.get(p)[m].toString());

System.out.print(" ");
}
//Object o=Result.clone();
//System.out.println(o);
p++;

System.out.println("\n");}}

}

//il y'au na beaucoup de variables en plus "dzl"
4 Mars 2012 22:34:22

voila celui la est plus lisible ,et merci d'avance
import java.util.ArrayList;


  1. public class tstarray {
  2. public static ArrayList<Integer[] > Result = new ArrayList<Integer[]>();
  3. public static ArrayList<Integer[] > Result2 = new ArrayList<Integer[]>();
  4.  
  5. public static ArrayList<Integer[] > redandance (ArrayList<Integer[] > result){
  6. Integer tab[]= new Integer []{5,2,2,2,27};
  7. if(result.contains(tab)) { result.remove(result.indexOf(tab));System.out.println("ccccc");}
  8. System.out.println(result.contains(tab));
  9. return Result;
  10.  
  11.  
  12. }
  13.  
  14.  
  15. public static void main(String[] args) {
  16.  
  17. int mat[][]={{5,2,2,2,27},{111,158,66,66,88},{111,158,66,66,2},{5,2,2,2,27},{17,3,7,11,11},{17,17,4,99,99},{111,158,66,66,88},{17,17,4,99,99}};
  18.  
  19.  
  20. Integer t3[]=new Integer[5];
  21. ArrayList<Integer []>t2 = new ArrayList<Integer[]>();
  22. for(int i=0;i<mat.length;i++)
  23. {for (int j=0;j<5;j++)
  24. {t3[j]=mat[i][j];
  25.  
  26. }
  27.  
  28. Result.add(t3);
  29. t3=new Integer[5];
  30.  
  31. }
  32.  
  33. int p=0,m=0;
  34.  
  35.  
  36. Result2=redandance (Result);
  37. while(p<Result.size())
  38. {
  39. for(m=0;m < Result2.get(p).length;m++)
  40. { System.out.print(Result2.get(p)[m].toString());
  41.  
  42. System.out.print(" ");
  43. }
  44.  
  45. p++;
  46.  
  47. System.out.println("\n");}}
  48.  
  49. }
a c 232 L Programmation
5 Mars 2012 09:24:07

Bah c'est bien ce que je t'ai dit. Tu as bien 2 tableaux différents...

Le premier, tu le créé dans ta matrice, ligne 17; et tu l'insères.
Ensuite, tu en créé un deuxième dans ta fonction, ligne 6. Du coup ce n'est plus les mêmes tableaux, et donc, le contains() retourne false.

Edit: et si tu peux utiliser la balise {code=java} {/code} autour de ton code (remplace { par [ et } par ]), merci
5 Mars 2012 11:54:25

c'est vraiment bizard ,pourtant les deux tableau on les memes valeurs, est ce que la methode contain test selement les pointeurs (si il sont eguaux alrs true else false) . et si c'est le cas pourquoi ce bout de code ne marche ps.svp aidez moi ,j'aimerais bien comprendre comment cette methode fonctionne ,si on lui attribue un tableau comme argument. voila le code,cette fois ci j'ai utiliser que la methode main

  1. public class tstarray2 {
  2. public static void main(String[] args) {
  3.  
  4. int mat[][]={{5,2,2,2,27},{111,158,66,66,88},{111,158,66,66,2},{5,2,2,2,27},{17,3,7,11,11},{17,17,4,99,99},{111,158,66,66,88},{17,17,4,99,99}};
  5. Integer tab[]= {5,2,2,2,27};
  6.  
  7. Integer t3[]=new Integer[5];
  8.  
  9. for(int i=0;i<mat.length;i++)
  10. {for (int j=0;j<5;j++)
  11. {t3[j]=mat[i][j];
  12.  
  13. }
  14.  
  15. Result.add(t3);
  16. t3=new Integer[5];
  17.  
  18. }
  19.  
  20. int p=0,m=0;
  21. if(Result.contains(tab)) { Result.remove(tab);
  22. System.out.println("ccccc");}
  23.  
  24. while(p<Result.size())
  25. {
  26. for(m=0;m < Result.get(p).length;m++)
  27. { System.out.print(Result.get(p)[m].toString());
  28.  
  29. System.out.print(" ");
  30. }
  31.  
  32. p++;
  33.  
  34. System.out.println("\n");}}}

a c 232 L Programmation
5 Mars 2012 15:11:49

On s'en fiche que tout soit dans la méthode main ou pas, ça revient au même que si c'était dans une autre foncion.

C'est similaire au système de pointeurs oui.
Ton 1er tableau n'est pas égal au 2ème, parce qu'ils ne sont pas considéré comme un seul et même objet.

A moins qu'il y ait une méthode plus simple (je ne fais pas souvent de Java), j'aurais tendance à te dire de te faire une petite fonction pour vérifier si ton ArrayList a le tableau spécifié.
Il suffirait de boucler sur tous tes éléments, et d'utiliser la fonction:
  1. Arrays.equals(tableau1, tableau2)
7 Mars 2012 19:07:21

slt ,tt d'abord merci de ta réponse .oui oui je sais qui qu'il n'y a pas de différence entre les méthodes.mais je voulez exprimer le pb plus clairement seulement . en se qui concerne ta proposition d'utiliser une méthode avec une boucle pour tt les éléments de array list ,je la trouve très utile ,je vais l’essayer et normalement sa va marché.mais j'imagine qu'il y a une autre solution plus simple (temps d’exécution réduit) .merci une deuxième fois.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS