Длина строки [] - PullRequest
       18

Длина строки []

0 голосов
/ 09 декабря 2011

Я объявляю массив String следующим образом:

String[] items = new String[10];
items[0] = "item1";
items[1] = "item2";

Как эффективно определить длину элементов, если в них всего 2 элемента.items.length возвращает 10.

Я выполняю цикл, который продолжается до его длины.Я хочу что-то с этим кодом, не добавляя новый код / ​​цикл для подсчета количества ненулевых элементов.Что я могу заменить на items.length

for (int i = 0; i < items.length; i++) {
...
}

Ответы [ 7 ]

8 голосов
/ 09 декабря 2011

Нет.Вам нужно будет выполнить цикл и посмотреть, сколько элементов не null.

Попробуйте использовать, например, ArrayList<String> вместо необработанного массива.

UPDATE

Чтобы ответить на новую часть вашего вопроса, ваш цикл может стать:

for (int i = 0; (i < items.length) && (items[i] != null); i++) {
    ...
}
2 голосов
/ 09 декабря 2011

Почему бы не использовать коллекцию:

Vector <String> items;
items.add("item1");
items.add("item2");

int length = items.size();
1 голос
/ 09 декабря 2011

Уже 10, просто 8 объектов установлены в нуль, поэтому вы можете выполнить следующие действия:

int count = 0 ;
if(items!=null){
  for(String str : items){
    if(str != null){
      count ++;
    }
  }
}
0 голосов
/ 09 декабря 2011

Чтобы найти количество всех ненулевых элементов в массиве / коллекции (которые не являются необходимыми в начале массива), вы можете использовать элегантное решение guava : Iterables.size(Iterables.filter(items, Predicates.notNull())).

0 голосов
/ 09 декабря 2011

Я думаю, может это поможет тебе

public class T1 {
    public static void main(String[] args) {
        String[] items = new String[10];
        items[0] = "item1";
        items[1] = "item2";     
        System.out.println(getActualSize(items));

    }

    public static int getActualSize(String[] items)
    {
        int size=0;
        for(int i=0;i<items.length;i++)
        {

            if(items[i]!=null)
            {
                size=size+1;
            }
        }
        return size;

    }
}
0 голосов
/ 09 декабря 2011

Имея в виду измененный вопрос, вы абсолютно ничего не можете сделать.Нет атрибута, дающего вам количество ненулевых элементов, так что вы либо берете другую коллекцию, либо проверяете каждое значение на ноль.

0 голосов
/ 09 декабря 2011

Вам нужно повторить и проверить на ноль.

int count = 0;
for(int i = 0; i < items.length; i++){
if(items[i] != null){
    count++;
    }
}

count даст количество занятых элементов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...