Как я могу получить (даже путем кодирования новой функции) размер массива объектов (созданный мной тип фракции)? - PullRequest
0 голосов
/ 19 апреля 2019

Я создаю библиотеку функций для класса Frazione (это означает дробь), и мне нужно работать с логическим размером массива типа Frazione.Как я могу получить его?

Я пробовал цикл for и цикл while, но не могу найти правильный способ отделить используемые индексы от неиспользуемых.

public static int size(Frazione[] set) {
   int size = 0;
   for (int i = 0; i < set.length; i++)
      if (set[i] != null) //the only way I know not to count unused indexes
         size++;
   return size;
}

Itдолжен вернуть количество элементов в массиве, но он даже не запускается

1 Ответ

0 голосов
/ 19 апреля 2019

Ваш код работает нормально.В качестве альтернативы вы можете сделать то же самое с помощью потокового API.Существует метод count(), который возвращает тип long.Так что вы можете привести его к int:

public static int size(Frazione[] set) {
    return (int)Arrays.stream(set)
            .filter(Objects::nonNull)
            .count();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...