it-swarm-eu.dev

Comment comptez-vous les éléments d'un tableau en Java?

Dis que j'ai le tableau

int theArray = new int[20];

La longueur du tableau est de 20 mais le nombre est égal à 0. Comment puis-je obtenir le nombre?

18
El Fuser

Qu'entendez-vous par "le compte"? Le nombre d'éléments avec une valeur non nulle? Il suffit de les compter.

Il n'y a aucune distinction entre ce tableau et celui qui a explicitement a été défini avec zéro. Par exemple, ces tableaux sont indiscernables:

int[] x = { 0, 0, 0 };
int[] y = new int[3];

Les tableaux en Java ont toujours une taille fixe - accessible via le champ length. Il n'y a pas de concept de "la quantité du tableau actuellement utilisé".

30
Jon Skeet

Parcourez-le et comptez les éléments non nuls:

int counter = 0;
for (int i = 0; i < theArray.length; i ++)
    if (theArray[i] != null)
        counter ++;

Cela peut être corrigé en utilisant pour: chaque boucle et ainsi de suite, mais c'est le jist.

Ou bien, ou gardez un compteur et chaque fois que vous ajoutez un élément, incrémentez-le.

16
TartanLlama

Ce que je pense que vous voudrez peut-être, c’est un ArrayList<Integer> au lieu d’un tableau. Cela vous permettra de:

ArrayList<Integer> arr = new ArrayList<Integer>(20);
System.out.println(arr.size());

La sortie sera 0.

Ensuite, vous pouvez ajouter des éléments à la liste, qui gardera une trace du nombre pour vous. (Cela augmentera également la taille du stockage de sauvegarde selon vos besoins.)

12
jjnguy

Java n'a pas la notion de "nombre" d'éléments utilisés dans un tableau.

Pour cela, Java utilise une ArrayList. La List est implémentée sur un tableau qui est redimensionné chaque fois que la JVM décide que sa taille est insuffisante (ou parfois lorsqu'elle est trop grande). 

Pour obtenir le nombre, vous utilisez mylist.size() pour vous assurer que la capacité (support de la matrice sous-jacente) est utilisée par mylist.ensureCapacity(20). Pour vous débarrasser de la capacité supplémentaire, vous utilisez mylist.trimToSize().

4
Edwin Buck

Il n'y a pas de fonctionnalité intégrée pour cela. Ce compte est dans son ensemble spécifique à l'utilisateur. Maintenir un comptoir ou autre chose.

3
Petar Minchev
  1. Votre code ne sera pas compilé, il devrait être int [] theArray = new int[20];;
  2. Vous pouvez obtenir la longueur du tableau sous la forme theArray.length;
  3. Pour les types primitifs, le tableau sera initialisé avec les valeurs par défaut (0 pour int).
  4. Vous pouvez en faire un Integer [] theArray = new Integer[20]; puis compter les membres initialisés comme ce code:

    public int count(Object [] array) {
        int c = 0;
        for(Object el: array) { if(el != null) c++; }
            return c;
    }
    

S'il vous plaît noter que cette réponse n'est pas sur pourquoi vous pouvez avoir besoin de cela et quelle est la meilleure façon de faire ce que vous voulez.

3
khachik

Vous pouvez déclarer un tableau de booléens avec la même longueur que votre tableau:

true: est utilisé
false: n'est pas utilisé

et remplacez la valeur du même numéro de cellule par true. Vous pouvez ensuite compter le nombre de cellules utilisées en utilisant une boucle for.

0
Ali Tohidi

Lors de la définition d'un tableau, vous mettez de côté un bloc de mémoire pour contenir tous les éléments que vous souhaitez inclure dans le tableau.

Cela aura une valeur par défaut, en fonction du type des types de membre du tableau.

Ce que vous ne pouvez pas faire, c'est connaître le nombre d'éléments que vous avez renseignés, à l'exception du suivi dans votre propre code.

0
Oded

Vous pouvez utiliser une boucle pour chaque boucle et compter le nombre de valeurs entières significatives. Vous pouvez également utiliser un ArrayList qui gardera une trace du pays pour vous. Chaque fois que vous ajoutez ou supprimez des objets de la liste, le nombre est automatiquement mis à jour. L'appel de la méthode size () vous donnera le nombre actuel d'éléments.

0
prgmast3r

Si vous souhaitez avoir un tableau dans lequel vous n'allouerez pas tous les éléments, vous devrez faire votre propre comptabilité pour vous assurer combien d'éléments vous y avez placés via une autre variable. Si vous souhaitez éviter cela en obtenant également un "tableau" pouvant augmenter ses capacités après son instanciation initiale, vous pouvez créer un ArrayList

ArrayList<Integer> theArray = new ArrayList<Integer>();
theArray.add(5); // places at index 0
theArray.size(); // returns length of 1
int answer = theArray.get(0); // index 0 = 5

N'oubliez pas de l'importer en haut du fichier:

import Java.util.ArrayList;
0
adimitri

Si vous supposez que 0 n'est pas un élément valide dans le tableau, le code suivant devrait fonctionner:

   public static void main( String[] args )
   {
      int[] theArray = new int[20];
      theArray[0] = 1;
      theArray[1] = 2;

      System.out.println(count(theArray));
   }

   private static int count(int[] array) 
   {
      int count = 0;
      for(int i : array)
      {
         if(i > 0)
         {
            count++;
         }
      }
      return count;
   }
0
Brent Wilson