Comment ajouter un objet dans la liste de tableaux en java
Voici deux classes, à la requête de la phrase et stackov. Une arraylist est utilisé pour stocker des objets de requête phrase de classe.Mais récemment ajouté objet est remplacer la précédente.Comment puis-je ajouter des objets de sorte qu'ils ne sont pas écrasés?
QuerySentence.java
public class QuerySentence {
public static String query;
public static String label;
public QuerySentence(){
}
public QuerySentence(String query,String label){
this.query = query;
this.label = label;
}
}
Stackov.java
package QueryClassifier;
import java.util.ArrayList;
public class stackov {
public static void main(String args[])
{
QuerySentence qs1 = new QuerySentence("What state produces the best lobster to eat","LOCATION");
QuerySentence qs2 = new QuerySentence("What is Dick Clark's birthday","DATE");
ArrayList<Object> doclist = new ArrayList<Object>();
doclist.add(0,qs1);
doclist.add(1,qs2);
int size = doclist.size();
while(size>0)
{
QuerySentence qs3 = (QuerySentence) doclist.get(size-1);
System.out.println("\nin loop : " + qs3.label + qs3.query);
size--;
}
}
}
essayez d'indenter ton code correctement. Aussi, il est inutile de poster deux classes entières, juste après la
ArrayList
manipulation.OriginalL'auteur Prasanthi Dev | 2013-03-12
Vous devez vous connecter pour publier un commentaire.
Le problème ne vient pas de votre boucle mais à partir de votre classe
QuerySentence
. Vous êtes en train de créer des objets statiques, ce qui signifie que vous ne créez pas des champs différents pour les différentes instances de classes, mais la classe aura qu'un unique exemplaire.Donc ce qui se passe ici, vous avez été l'attribution de ces de la valeur à votre classe
QuerySentence
:Et puis effacés de pentecôte :
Que vous ajoutez deux objets dans votre
ArrayList
, bien sûr, dans votre boucle, vous pourrez imprimer les deux résultats. Mais seuls les résultats qs2. Supprimerstatic
de votre champs de déclarations et il fonctionne parfaitement :Vous n'avez pas besoin d'indexer votre requête phrases tout en ajoutant.
Et vous pouvez également améliorer votre boucle. Vous pourriez faire :
Rappelez-vous aussi les conventions Java : vos classes doit commencer par une majuscule (
Stackov
). Si vous avez également des travaux sur l'encapsulation, c'est mieux de déclarer vos champsprivate
et de créergetters
etsetters
pour eux. Avec cela, votrefor-statement
devrait ressembler à ceci :C'est parce que vous avez déclaré votre liste de tableaux comme
ArrayList<Object> doclist = new ArrayList<Object>();
. UtilisationArrayList<QuerySentence> doclist = new ArrayList<QuerySentence>();
à la place.Je Vous Remercie . cela a résolu mon problème
Vous êtes les bienvenus. Bonne chance
Et n'hésitez pas à accepter la réponse si elle a été utile 🙂
OriginalL'auteur Rob
OriginalL'auteur
index n'est pas nécessaire d'ajouter comme ce
OriginalL'auteur subodh
OriginalL'auteur Kevin Bowersox