web-dev-qa-db-fra.com

Java - Comment accéder à une ArrayList d'une autre classe?

Bonjour je suis un débutant en Java et voici ma question: j'ai cette première classe avec les variables suivantes:

import Java.util.ArrayList;

public class numbers {
    private int number1 = 50;
    private int number2 = 100;
}

Et j'ai aussi ce cours:

import Java.util.ArrayList;

public class test {
    private numbers number;
}

Ma question est la suivante: je veux stocker les variables number1 et number2 dans une ArrayList, puis accéder à cette ArrayList à partir du test de classe. Comment puis je faire ça?

14
Imonar Smith
import Java.util.ArrayList;
public class numbers {
   private int number1 = 50;
   private int number2 = 100;
   private List<Integer> list;

   public numbers() {
       list = new ArrayList<Integer>();
       list.add(number1);
       list.add(number2);
   }

   public List<Integer> getList() {
       return list;
   }
}

Et la classe de test:

import Java.util.ArrayList;
public class test {
   private numbers number;

   //example
   public test() {
     number = new numbers();
     List<Integer> list = number.getList();
     //hurray !
   }
}
21

Vous pouvez le faire en fournissant dans la classe numbers:

  • Une méthode qui renvoie l'objet ArrayList lui-même.
  • Une méthode qui retourne un wrapper non modifiable de ArrayList. Cela empêche la modification de la liste à l'insu des numéros de classe.
  • Méthodes qui fournissent l'ensemble des opérations que vous souhaitez prendre en charge à partir des numéros de classe. Cela permet aux numéros de classe de contrôler l'ensemble des opérations prises en charge.

Soit dit en passant, il existe une convention forte selon laquelle Java sont en majuscules.

Cas 1 (getter simple):

public class Numbers {
      private List<Integer> list;
      public List<Integer> getList() { return list; }
      ...
}

Cas 2 (wrapper non modifiable):

public class Numbers {
      private List<Integer> list;
      public List<Integer> getList() { return Collections.unmodifiableList( list ); }
      ...
}

Cas 3 (méthodes spécifiques):

public class Numbers {
      private List<Integer> list;
      public void addToList( int i ) { list.add(i); }
      public int getValueAtIndex( int index ) { return list.get( index ); }
      ...
}
3
Andy Thomas

Vous pouvez effectuer les opérations suivantes:

  public class Numbers {
    private int number1 = 50;
    private int number2 = 100;
    private List<Integer> list;

    public Numbers() {
      list = new ArrayList<Integer>();
      list.add(number1);
      list.add(number2);
    }

    int getNumber(int pos)
    {
      return list.get(pos);
    }
  }

  public class Test {
    private Numbers numbers;

    public Test(){
      numbers = new Numbers();
      int number1 = numbers.getNumber(0);
      int number2 = numbers.getNumber(1);
    }
  }
3
Malf

Deux voies

1) instancier le first class et getter pour arrayList

ou

2) Faire une liste d'arrayl comme static

Et enfin

Java Basics By Oracle

1
Suresh Atta

Mettez-les dans une arrayList dans votre première classe comme:

import Java.util.ArrayList;
    public class numbers {

    private int number1 = 50;
    private int number2 = 100;

    public ArrayList<int> getNumberList() {
        ArrayList<int> numbersList= new ArrayList<int>();
        numbersList.add(number1);
        numberList.add(number2);
        ....
        return numberList;
    }
}

Ensuite, dans votre classe de test, vous pouvez appeler number.getNumberList () pour obtenir votre arrayList. En outre, vous souhaiterez peut-être créer des méthodes telles que addToList/removeFromList dans votre classe de nombres afin de pouvoir le gérer comme vous en avez besoin.

Vous pouvez également accéder à une variable déclarée dans une classe à partir d'une autre simplement comme

numbers.numberList;

si vous l'avez déclaré public.

Mais ce n'est pas une bonne pratique à mon avis, car vous devrez probablement modifier cette liste dans votre code plus tard. Notez que vous devez ajouter votre classe à la liste d'importation.

Si vous pouvez me dire quelles sont les exigences de votre application, je serai en mesure de vous dire plus précisément ce que je pense qu'il est préférable de faire.

1
Adrian Zaharia