统计数组中元素出现的次数——Java小程序

这篇博客介绍了如何使用Java编写小程序,统计给定数组中元素出现次数的奇偶性。通过建立索引数组,利用按位异或操作在0和1之间切换表示次数的奇偶。文章提到了数组复制和长度调整的优化方法,如System.arraycopy()和Arrays.copyOf(),并讨论了在特定情况下使用不同数据类型的考量。
摘要由CSDN通过智能技术生成

   这段小代码,是在阅读了这篇博文后,作为练习写出来的,原文中,作者做了很详细的分析,在此根据自己的理解整理出了这篇博客。

   原题是,给定一个int数组,找出数组中出现次数为奇数的数字。最终决定建立一个以数组元素为索引的数组,数组中的元素的值即为对应的数字出现的次数。由于数字出现的次数仅有奇偶之分,因此可以只用0和1以示区别。

   以上所说的解法,最大的问题在于所创建的索引数组的大小该如何确定,如果已知待处理的数组中的最大数字,那么以此作为长度即可;如果不知道,那么要么设置一个比较大的数字(如Integer.MAX_VALUE),要么根据先设置一个初值,然后根据需要对索引素组进行扩容,为了节约存储空间,我采用第二种方法。

   关于数组的操作,我觉得有两个方法很重要:

  1. 数组的复制
      数组的复制,当然可以通过for循环来完成,但是这样效率太低;也可以通过数组对象本身的clone()方法来实现,但是这样是不能指定复制的内容的。
      利用System.arraycopy(),可以灵活、高效地完成数组指定内容的复制 ,在Java中复制数组时,应优先考虑这种方法。
  2. 数组长度的调整
      在Java中,数组一经建立,其长度是不能改变的。 利用Arrays.copyOf(),可以得到一个新的数组,数组长度通过参数指定,原数组中的内容会保留,但是会根据新数组的长度对内容进行删减
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值