String []长度计数

时间:2011-12-09 11:21:11

标签: java arrays string

我将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 个答案:

答案 0 :(得分:8)

没有。您需要循环查看有多少非null元素。

考虑使用例如<{1}}而不是原始数组。

<强>更新

要回答问题的新部分,您的循环可以变为:

ArrayList<String>

答案 1 :(得分:2)

为什么不使用集合:

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

int length = items.size();

答案 2 :(得分:1)

已经只有8个对象被设置为null,因此您可以执行以下操作

int count = 0 ;
if(items!=null){
  for(String str : items){
    if(str != null){
      count ++;
    }
  }
}

答案 3 :(得分:0)

您需要迭代并检查null。

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

count将给出被占用元素的数量

答案 4 :(得分:0)

考虑到修改过的问题,你绝对无能为力。没有属性为您提供非空元素的计数,因此您要么采取其他集合,要么检查每个值是否为空。

答案 5 :(得分:0)

我想这可能会对你有所帮助

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;

    }
}

答案 6 :(得分:0)

要查找数组/集合中的所有非null元素(在数组的开头不是必需的),您可以使用优雅的guava解决方案:Iterables.size(Iterables.filter(items, Predicates.notNull())).