Как вы подсчитываете элементы массива в java
скажем, у меня есть массив
int theArray = new int[20];
длина массива равна 20, но количество равно 0. Как я могу получить счет?
12 ответов
что вы подразумеваете под "графом"? Количество элементов с ненулевым значением? Вам просто придется пересчитать их.
здесь различия между этим массивом и тот, который имеет явно установлен с нулевыми значениями. Например, эти массивы неразличимы:
int[] x = { 0, 0, 0 };
int[] y = new int[3];
массивы в Java всегда имеют фиксированный размер - доступ через
повторите его и подсчитайте элементы, которые не являются нулевыми:
int counter = 0;
for (int i = 0; i < theArray.length; i ++)
if (theArray[i] != null)
counter ++;
Это можно привести в порядок, используя for:each петли и тому подобное, но это jist.
либо это, либо сохранить счетчик и всякий раз, когда вы добавляете элемент, увеличьте его.
что я думаю вы можете это ArrayList<Integer>
вместо массива. Это позволит вам сделать:
ArrayList<Integer> arr = new ArrayList<Integer>(20);
System.out.println(arr.size());
выход будет 0
.
затем, вы можете добавить вещи в список, и он будет отслеживать количество для вас. (Он также будет расти размер резервного хранилища, как вам нужно, а также.)
Java не имеет понятия "количество" используемых элементов в массиве.
чтобы получить это, Java использует ArrayList
. The List
реализуется поверх массива, который изменяется всякий раз, когда JVM решает, что он недостаточно большой (или иногда, когда он слишком большой).
чтобы получить счет, вы используете mylist.size()
для обеспечения емкости (поддержка базового массива) вы используете mylist.ensureCapacity(20)
. Чтобы избавиться от дополнительной емкости, вы используете mylist.trimToSize()
.
для этого нет встроенной функциональности. Это количество в целом зависит от пользователя. Поддерживайте счетчик или что-то еще.
- ваш код не будет компилироваться, он должен быть!--1-->;
- вы можете получить длину массива как
theArray.length
; - для примитивных типов массив будет инициализирован значениями по умолчанию (0 для int).
-
вы можете сделать это
Integer [] theArray = new Integer[20];
а затем подсчитайте инициализированные члены, как это делает этот код:public int count(Object [] array) { int c = 0; for(Object el: array) { if(el != null) c++; } return c; }
обратите внимание, что этот ответ не о том, почему вам может понадобиться это и каков наилучший способ сделать то, что вы хотеть.
при определении массива выделяем блок памяти для хранения всех элементов в массиве.
Это будет иметь значение по умолчанию, в зависимости от типа массива типов членов.
то, что вы не можете сделать, это узнать количество элементов, которые вы заполнили, за исключением отслеживания его в своем собственном коде.
вы можете использовать a для каждого цикла и подсчитать количество целых значений, которые являются значимыми. Вы также можете использовать ArrayList, который будет отслеживать графство для вас. Каждый раз, когда вы добавляете или удаляете объекты из списка, он автоматически обновляет счетчик. Вызов метода size () даст вам текущее количество элементов.
Если вы хотите иметь массив, в котором вы не будете выделять все элементы, вам придется сделать свой собственный учет, чтобы убедиться, сколько элементов вы разместили в нем через какую-то другую переменную. Если вы хотите избежать этого, а также получить "массив", который может увеличивать емкости после его первоначального создания, вы можете создать 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
Не забудьте импортировать его в верхней части файла:
import java.util.ArrayList;
Если вы предполагаете, что 0 не является допустимым элементом в массиве, то следующий код должен работать:
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;
}