我将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++) {
...
}
答案 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())).