说我有一个类类型,我必须声明一个数组来存储这种类型。 E.g:
MyType[] t = new MyType[5]
这意味着我分配5个单元格来存储MyType项目。在我的程序中,假设我添加了2个MyType项(动态)
t[0] = new MyType(..);
t[1] = new MyType(..);
如果我想知道实际填充了多少项,
int count=0;
for(int j =0; j<t.length ; j++){
if ( t[j] != null ){
++count;
}
}
测试null是否正确?因为我似乎无法增加计数。 count始终为0.另外,length()显示数组的大小为5.是否有一些方法可以显示实际填充项的数量?感谢
答案 0 :(得分:1)
首先,数组上没有.length()方法。这是您可以访问的属性
for(int j =0; j<t.length ; j++){
if ( t[j] != null ){
++count;
}
}
至于这是否是唯一的方式,我认为是。您可以找到像Apache Commons Collections这样的实用程序,但它们最终仍会做同样的事情:迭代数组并检查每个项目。
这是因为您使用的术语filled
实际上与数组无关,而是仅将第n个元素从对null的引用更改为对其他内容的引用。更糟糕的是,具有5个空元素的数组和具有5个非空元素的数组都是长度为5。
如果这是一种获取可变大小数组的方法,其中长度是您添加的内容的数量,那么您可能需要考虑ArrayList
。
http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html
你可以这样使用它:
List<MyType> t = new ArrayList<MyType>(5);
t.add(new MyType(..));
t.add(new MyType(..));
int count = t.size(); // returns 2
答案 1 :(得分:1)
Below code returns the filled count.
package com.type;
public class MyType {
private int id;
private String name;
public MyType(int id,String name){
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String a[]){
MyType[] t = new MyType[5];
t[0] = new MyType(1,"Check1");
t[1] = new MyType(2,"Check2");
int count=0;
for(int j =0; j<t.length ; j++){
if ( t[j] != null ){
++count;
}
}
System.out.println(">>"+count); // Count is 2
System.out.println(">>"+t.length); // Length is 5
}
}