[Java] ArrayList

ArrayList [Java] - Java - Programmation

Marsh Posté le 03-01-2014 à 19:05:43    

Bonjour,
 
je suis débutant en Java et je voudrais faire une fonction mais je bloque depuis pas mal de temps.
Donc j'aimerais faire une fonction qui rend un tableau d'entiers correspondant aux élements de l'arrayList d'Integer fournie entre les indices min et max inclus fournis.
En gros, copier dans un tableau d'entiers une partie de la liste mais je ne vois pas du tout comment faire ...
 
Avez vous une solution ?
 
Merci d'avance pour votre réponse
 
EDIT : j'ai bien trouvé une solution mais je ne sais pas si c'est correct mais ça fonctionne
 

Code :
  1. public int[] getTab(ArrayList list,int min,int max)
  2. {
  3.  int[]tab = new int[10];
  4.  List sousListe = list.subList(min, max);
  5.  for(int i =0;i<sousListe.size();i++)
  6.  {
  7.   tab[i] = (Integer) sousListe.get(i);
  8.   System.out.println(tab[i]);
  9.  }
  10.  return tab;
  11. }


Message édité par redbox06 le 03-01-2014 à 19:35:55
Reply

Marsh Posté le 03-01-2014 à 19:05:43   

Reply

Marsh Posté le 03-01-2014 à 23:41:47    

Salut

 

Par definition, si ca fonctionne, ben c'est correct.

 

Apres si tu veux parler de "beaute du code" ou d'optimisation... Pas trop d'avis mais je peux faire quelques commentaires.

 

Le deux trucs que je ferais forcement remarquer si je voyais un code comme ca au boulot, c'est:
- l'initialisation de ton tableau a 10 elements en dur: si ton resultat en a moins, t'as des elements qui servent a rien et peuvent induire en erreur selon ce que tu fais du resultat. Si ton resultat est cense avoir plus de 10 elements, ton code va planter a l'execution -> tu devrais faire un new int[max-min+1] plutot qu'un new int[10]
- si tes parametres ne sont pas coherents (min et/ou max en dehors du "vrai" nombre d'elements de la liste) tu vas aussi planter - tu devrais soit faire une gestion d'exception dans ta fonction (i.e. verifier si min et max sont coherents par rapport a ta liste, et faire un traitement special le cas echeant), soit au pire indiquer que tu peux renvoyer une exception (pour forcer l'appelant a gerer les cas a probleme).

 

Apres quelques autres remarques, mais c'est plutot du chipotage:
- ArrayList est un type specifique de liste - tu pourrais facilement rendre ta fonction utilisable avec tout type derive de List en changeant ton parametre (surtout que tu utilises toi meme une List dans le code).
- en Java "recent" c'est bien vu de declarer ton type de liste - dans ton cas, ArrayList<Integer> list et List<Integer> sousListe (mais si t'as un vieux JDK ca reconnaitra pas cette syntaxe)
- la conversion de sousListe.get(i) d'un Integer en un int (dans ta boucle) est couverte silencieusement par Java mais un code "bien ecrit" la ferait apparaitre explicitement pour eviter tout malentendu
- tu pourrais aussi eviter de recourir a une sous-liste et sortir les elements directement de ta liste (par exemple avec une boucle for(int i=min, i<=max; i++)). Mais soyons honnetes, ca n'est pas forcement plus rapide a l'execution (ca depend de comment la liste est implementee)

 

J'pense que c'est tout...

 

A+


Message édité par lasnoufle le 03-01-2014 à 23:43:29

---------------
C'était vraiment très intéressant.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed