1
votes

Comment ajouter plusieurs valeurs dans la méthode d'ajout de tableau?

J'essaie d'ajouter plusieurs valeurs à un tableau, mais cela renvoie une erreur ne peut pas résoudre. Y a-t-il un moyen ou un contournement ici?

for (Map.Entry<String,String> entry : hash.entrySet()) {
          String key = entry.getKey();
          String value = entry.getValue();

          if(typePHP.equals("TARGET")) {
              message += key + " " + value + "t\n";
           }else {
              message += key + " " + value + "r\n";
           }
          array.add(Integer.parseInt(key),value,typePHP,gamePHP);
          //Heres the error.
    }

Voici l'erreur: Impossible de résoudre la méthode 'add (int, java.lang.String, java.lang.String, java. lang.String) '

J'ai besoin de l'élément unique pour stocker 4 valeurs à la fois et avoir une sortie comme {109,40, TYPE, GAME};


9 commentaires

veuillez publier le journal des erreurs complet


veuillez vérifier à nouveau @Fartab


L'erreur que vous avez publiée indique que array n'a pas de méthode add . quel est le type de array ? veuillez mentionner sa déclaration.


ArrayList array = new ArrayList <> (); @Fartab, je peux y ajouter des valeurs mais je ne peux ajouter qu'une valeur à la fois, j'ai besoin que ce soit 4 valeurs à la fois.


vous devez utiliser 'push', comme: array.push (item1, item2, ..., itemX), la méthode add ne fonctionne pas


Il n'y a pas de méthode push pour ça @ sultan95


utiliser la méthode addAll


Il vous suffit d'appeler la méthode add 4 fois ou vous pouvez utiliser addAll


quel est le type de tableau ? Votre exigence est un obj personnalisé afin que vous puissiez créer un objet personnalisé et le stocker dans arrayList


3 Réponses :


2
votes

utilisez addAll de cette manière:

ArrayList<ArrayList<String>> array2d = new ArrayList<>();

for (Map.Entry<String,String> entry : hash.entrySet()) {
      String key = entry.getKey();
      String value = entry.getValue();

      if(typePHP.equals("TARGET")) {
          message += key + " " + value + "t\n";
       }else {
          message += key + " " + value + "r\n";
       }

      array2d.add(new ArrayList<String>() {{
        add(key);
        add(value);
        add(typePHP);
        add(gamePHP);
    }});
}


MISE À JOUR : Vous avez besoin d'un tableau 2D, basé sur cette phrase J'ai besoin de l'élément unique pour stocker 4 valeurs à la fois et avoir une sortie comme {109,40, TYPE, GAME};

Alors, essayez ceci:

    ArrayList<ArrayList<String>> array2d = new ArrayList<>();
    array2d.add(new ArrayList<String>() {{
        add("109");
        add("40");
        add("TYPE");
        add("GAME");
    }});

Dans votre cas, il devrait y avoir quelque chose comme ceci:

array.addAll(Arrays.asList( key,value,typePHP,gamePHP) );    


3 commentaires

Cela le renvoie comme un élément unique, j'en ai besoin pour ne contenir que 4 valeurs de chaîne à la fois dans 1 élément.


J'ai mis à jour la solution pour contenir 4 valeurs de chaîne à la fois dans 1 élément


Votre réponse mise à jour fonctionne parfaitement, merci! Je l'ai également accepté comme bonne réponse



2
votes

Tout d'abord, assurez-vous que votre ArrayList stocke actuellement un objet avec un constructeur de (String a, String b, String c). Lorsque vous appelez array.add (new Item (a, b, c), Java doit faire correspondre cela à une méthode existante.

array.add(new Item(a, b, c));

Ensuite, vous devez utiliser new lorsque vous créez un nouvel objet utilisant add ().

public class Item {
public Item(String a, String b, String c) {
        // initialize your object's variables here in the constructor
    }

}

Voir ceci depuis Java: Ajout de nouveaux objets à une ArrayList à l'aide d'un constructeur

Et cette référence d'Oracle sur les constructeurs: https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html a >


0 commentaires

0
votes

Vous pouvez créer l'objet personnalisé de votre choix membre

ArrayList<Item> itemArray = new ArrayList <>();

for (Map.Entry<String,String> entry : hash.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();

    if(typePHP.equals("TARGET")) {
        message += key + " " + value + "t\n";
    }else {
        message += key + " " + value + "r\n";
    }
    itemArray.add(new Item(Integer.parseInt(key),value,typePHP,gamePHP));
}

Vous pouvez maintenant utiliser comme

public class Item {

    private int key;
    private  String value;
    private String typePHP;
    private String gamePHP;

    public Item(int key, String value, String typePHP, String gamePHP) {
        this.key = key;
        this.value = value;
        this.typePHP = typePHP;
        this.gamePHP = gamePHP;
    }

    public int getKey() {
        return key;
    }

    public void setKey(int key) {
        this.key = key;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getTypePHP() {
        return typePHP;
    }

    public void setTypePHP(String typePHP) {
        this.typePHP = typePHP;
    }

    public String getGamePHP() {
        return gamePHP;
    }

    public void setGamePHP(String gamePHP) {
        this.gamePHP = gamePHP;
    }
}


0 commentaires