2008-12-30 7 views
1

Je vous remercie pour votre aide. Je m'excuse pour mon anglais, il est encore en train d'apprendre. Je fais une application dans l'interface graphique en Java. J'ai un problème.ArrayList et le problème avec l'ajout d'éléments

Dans cette application, j'ai une ArrayList que je veux rencontrer avec des données.

L'utilisateur clique sur le bouton et les données de JTextfield doivent être placées dans Arraylist. Dans ce cas, il est inséré uniquement dans la première rangée.

Les autres entrées dans Arraylist ne sont pas.

Demandez-moi s'il vous plaît comment puis-je faire cela.

Voici le code de ma demande:

public void save_to_array(String jmeno_zad, 
          String prijmeni_zad, 
          String rodne_cislo_zad, 
          String mesto_zad, 
          String spz_zad, 
          String barva_zad, 
          String vin_zad, 
          String znacka_zad){ 


      String arraytext=prijmeni_zad+ ","+ 
      jmeno_zad+ ","+ 
      rodne_cislo_zad+ ","+ 
      mesto_zad+","+ 
      spz_zad+","+ 
      barva_zad+","+ 
      vin_zad+","+ 
      znacka_zad; 

      int posl=arlist.size(); 
      if(arlist.isEmpty()||posl==1){ 
       arlist.add(0,arraytext); 
      } 

      if(!arlist.isEmpty()&& posl>1){ 
       arlist.add(posl-1, cele_jmeno); 
      } 
     } 

Répondre

4

utiliser juste ArrayList.add (arraytext), non ArrayList.add (0, arraytext). Vous ne vous souciez pas vraiment de la position dans laquelle elle finit, n'est-ce pas?

Remplacer

int posl=arlist.size(); 
if(arlist.isEmpty()||posl==1){ 
      arlist.add(0,arraytext); 
    } 
    if(!arlist.isEmpty()&& posl>1){ 
      arlist.add(posl-1, cele_jmeno); 
    } 

avec

arlist.add(arraytext); 
0

Ok, laissez-moi voir si je reçois cela correctement.

Vous avez un JTextField. En ce qui concerne votre code, je comprends que, si l'arrayliste est vide, vous devriez mettre le texte dans la première position.

Si ce n'est pas vide, il devrait aller dans les positions suivantes?

Ce serait comme ceci:

public void saveToArray( String jmeno_zad, 
          String prijmeni_zad, 
          String rodne_cislo_zad, 
          String mesto_zad, 
          String spz_zad, 
          String barva_zad, 
          String vin_zad, 
          String znacka_zad) { 


      String arrayText=prijmeni_zad+ ","+ 
          jmeno_zad+ ","+ 
          rodne_cislo_zad+ ","+ 
          mesto_zad+","+ 
          spz_zad+","+ 
          barva_zad+","+ 
          vin_zad+","+ 
          znacka_zad; 

      arrayList.add(arrayText); 

} 

Par défaut, si le arraylist est vide, le texte sera dans la 1ère position. L'addition suivante sera dans le 2ème, 3ème etc.

J'espère que cela aide.

0

si vous vous souciez de sa position, essayez de l'ajouter à un SortedSet (probablement un TreeSet)

4

Toutes les réponses que vous avez reçues jusqu'à présent, sont corrects. Précisément, si vous voulez ajouter que dans un arraylist et vous ne se soucient pas vraiment de la position, il suffit d'utiliser

arrayList.add(arrayText) 

Sinon, à l'aide d'un TreeSet serait plutôt aider.

La raison pour laquelle j'ai tenté cette question est parce que vos arguments de méthode produisent une odeur de code malveillant. J'ai quelques questions avec des suggestions appropriées.

  • Avez-vous vraiment besoin de 8 arguments? Pourquoi ne pas définir un POJO (Plain Old Java Object)
  • Que se passera-t-il si vous pensez que vous devez passer encore une chose en argument? Souhaitez-vous l'augmenter à 9?POJO aurait du sens et serait définitivement plus propre
  • Pourquoi concaténez-vous toutes les valeurs en une seule chaîne séparée par une virgule, en tant que délimiteur? Pourquoi ne pas avoir une liste de POJO? Cela ne servirait-il pas votre but? En fait, de cette façon, je ne sais pas combien de fois vous devez manipuler cette chaîne, ce qui entraînera un travail inutile chaque fois que vous aurez besoin d'un élément particulier et cela affectera les performances, clairement.
+0

Bon point. Quelque chose ne va pas si vous avez besoin de faire toute cette concaténation. –

+0

Oui, bon point. +1 –