java中如何知道数组中实际的元素个数

我声明一个数组,array[20],然后我向其中放入对象信息,但是只放了10个对象信息,怎样知道这个数组中有10个元素?代码?... 我声明一个数组,array[20],然后我向其中放入对象信息,但是只放了10个对象信息,怎样知道这个数组中有10个元素? 代码? 展开
 我来答
大雁南飞
推荐于2017-09-30 · 知道合伙人互联网行家
大雁南飞
知道合伙人互联网行家
采纳数:1660 获赞数:26106
编码爱好者

向TA提问 私信TA
展开全部

java中知道数组中实际的元素个数的方法:

 定义一个变量保存数组中的元素个数,然后对数组进行遍历,当数组元素不为空时,变量的值+1,否则不改变。

代码为:

int n = 0;  //保存元素个数的变量
for(int i = 0; i < array.length; i++)
{
if(null != array[i]) n++;
}
System.out.println(n);
松鼠的尾巴丶
2018-11-23
知道答主
回答量:3
采纳率:0%
帮助的人:2304
展开全部
java原生数组的话,除了遍历以外不能做到。
因为,数组实际上是内存中的一段逻辑上的连续空间,比如int[] numbers = new int[5],是相当于有5个int在内存中“一字排开”。不管是否对其进行赋值,他们所在的那一段内存空间中都是有值的。如果你认为,对numbers[0] = 1, numbers[1] = 2这样赋值之后,赋过值的和没赋过值的在存储上有什么不同,认为没赋过值的部分是null一类的东西,从而可以快速找到有哪些元素是被赋值过的话,那就错了。
对于元素是引用变量类型的数组同理。假如我们进行 Object[] objs = new Object[4]; objs[0] = new Date(); 的操作,虽然确实objs[0]指向的对象不是null,而objs[1], objs[2],objs[3]都是指向了null对象,但实际上对于这些引用变量,他们在内存中所占的空间都是相同的,因此只有访问到这个变量并且去查看它指向的对象,才能知道它是否被赋过值,也就是必须要遍历才能统计。
如果想不遍历就知道数组中哪些是被赋过值的,哪些是初始化后没动过的,需要自己定义一个数据结构,维护数组的同时记录下其中的哪些位置被操作过,类似这样的:
public class ExpandArray{
public Object[] data;

public String index;

//每个操作都需要更新index,index可以是一个"00000001"这样的字符串,用1表示数组中这个位置被操作过,0表示是只进行过初始化过的

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
步步高升a7a
2012-05-12 · 超过16用户采纳过TA的回答
知道答主
回答量:142
采纳率:0%
帮助的人:58.5万
展开全部
写一个遍历数组的方法,用里面的.class方法判断是否为你定义的类型,是就在标记为加一,否则不变,最后查看标记为数据就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
康熙转世
推荐于2017-09-14 · TA获得超过6839个赞
知道大有可为答主
回答量:4325
采纳率:85%
帮助的人:2855万
展开全部
int n = 0;
for(int i = 0; i < array.length; i++)
{
if(null != array[i]) n++;
}
System.out.println(n);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
preferer
2012-05-12 · 超过32用户采纳过TA的回答
知道答主
回答量:116
采纳率:0%
帮助的人:89.4万
展开全部
你定义一个int i=0;没加入一个对象信息i++;不就能知道了么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式