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

Bonjour je suis débutant en Java et c'est ma question: J'ai ce premier de la classe avec les variables suivantes:

import java.util.ArrayList;

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

Et j'ai cette classe:

import java.util.ArrayList;

public class test {
    private numbers number;
}

ma question ici est: je veux stocker les variables number1 et number2 dans un ArrayList, puis accéder à cet ArrayList à partir du test de classe. Comment puis-je le faire?

11
demandé sur ollo 2013-05-09 16:48:41

5 réponses

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;
   }
}
import java.util.ArrayList;
public class test {
   private numbers number;

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

17
répondu Konstantin Yovkov 2016-01-07 10:40:38

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
répondu Malf 2013-05-09 13:00:53

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 renvoie un wrapper non modifiable de L'ArrayList. Cela empêche de modifier la liste à l'insu des numéros de classe.
  • méthodes qui fournissent l'ensemble des opérations que vous voulez supporter à partir des numéros de classe. Cela permet aux numéros de classe de contrôler l'ensemble des opérations prises en charge.

par la manière, il y a une forte convention que les noms de classe Java sont en majuscules.

Cas 1 (simple getter):

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

cas 2 (emballage 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
répondu Andy Thomas 2013-05-09 13:05:19

de deux façons

1)créer une instance de la first class et getter pour arrayList

ou

2)Faire arraylist comme static

Et enfin

Java Bases Par Oracle

1
répondu ꜱᴜʀᴇꜱʜ ᴀᴛᴛᴀ 2013-05-09 12:49:58

les mettre dans un 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;

}
}

Puis, dans votre classe de test, vous pouvez appeler des numéros.getNumberList() pour obtenir votre liste de tableaux. En outre, vous pourriez vouloir créer des méthodes comme addToList / removeFromList dans votre classe de nombres afin que vous puissiez le gérer de la façon dont vous en avez besoin.

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

numbers.numberList;

si vous le faites déclarer public.

Mais ce n'est pas une bonne pratique à mon avis, puisque 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 ce que je pense qu'il est préférable de faire.

1
répondu Adrian Zaharia 2013-05-09 13:04:12