我很好奇删除数组中空值的最有效方法是什么.这是我当前的null(0)删除方法.

public static int[] removeNull(int[] array){

int j = 0;

for( int i=0; i

{

if (array[i] != 0)

array[j++] = array[i];

}

int [] newArray = new int[j];

System.arraycopy( array, 0, newArray, 0, j );

return newArray;

}

这种方法的表现是什么?我原以为它是n.

解决方法:

是的,你的方法的时间复杂度是O(n) – 你的循环有n(数组的长度)迭代,复制数组需要的时间与复制数组的大小成正比,在这种情况下是O(n)in最坏的情况.

并且你不能做得更好(在时间复杂度方面),因为你必须迭代整个数组才能找到应该删除的元素.

如果您的目标是降低代码复杂性(即编写最短的代码量),则可以使用IntStream(需要Java 8或更高版本):

public static int[] removeNull(int[] array) {

return Arrays.stream(array).filter(i -> i != 0).toArray();

}

正如Andreas评论的那样,这种解决方案的优势在于保持原始数组不变.

标签:java,arrays,performance

来源: https://codeday.me/bug/20190828/1749198.html

java 数组减除值_java – 删除数组中空值的最有效方法是什么.相关推荐

  1. java 数组减除值_java数组操作 - osc_hwpd2zko的个人空间 - OSCHINA - 中文开源技术交流社区...

    什么是数组: 程序 = 算法+数据结构 算法:解决问题的步骤,流程(顺序,分支,循环) 数据结构:将数据按照某种特定的结构来保存 数怎么存 设计良好的,合理的数据结构可以导致好的算法 数组:就是一种最 ...

  2. java初始化该字符串值_java字符串数组初始化和赋值

    //一维数组 String[] str = new String[5]; //创建一个长度为5的String(字符串)型的一维数组 String[] str = new String[]{" ...

  3. java 数组取接近值_java – 获取数组中最接近的数值

    我有一个正数/负数int的数组 int[] numbers = new int[10]; numbers[0] = 100; numbers[1] = -34200; numbers[2] = 304 ...

  4. php中删除数组元素的函数,php删除数组中的元素函数用法汇总

    php中删除数组元素是非常的简单的,主要是unset,array_splice,但是关于两者有,长时间混用,有的时候竟然分不出区别. 很多地方都这样区别unset,array_splice array ...

  5. java 反射创建对象并赋值_java使用反射创建并操作对象的方法

    Class 对象可以获得该类里的方法(由 Method 对象表示).构造器(由 Constructor 对象表示).成员变量(由 Field 对象表示),这三个类都位于 java.lang.refle ...

  6. 如何删除电脑EFI分区|删除电脑中的EFI分区的方法

    如何删除电脑EFI分区|删除电脑中的EFI分区的方法 1.按Win+R打开运行,输入:Diskpart,点击确定; 2.在命令提示符中输入:list disk 按回车,选择需要修改的磁盘; 3.这里需 ...

  7. 计算机 其他 无法删除吗,Ghost win7系统下删除我的电脑中其他多余图标的方法

    在ghost win7系统下打开我的电脑时,大家可以看到的一般都是磁盘.可移动存储设备等图片,但是有些用户发现在电脑上面安装了一些软件之后,就会在其他图标中多了很多软件的图标,虽然这样可以方便我们打开 ...

  8. java 给数组添加删除数_Java实现数组的添加、删除、查找(基础型)

    /*delete add find */ public class ArrayTest { /** * @param args */ /*定义数组大小*/ private static int COU ...

  9. java数组删除元素_java删除数组中的某一个元素的方法

    下面小编就为大家带来一篇java删除数组中的某一个元素的方法.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 实例如下: package org.company.proj ...

最新文章

  1. Apache2.2安装图解
  2. BLE控制器之物理层特性
  3. Vue.js 单元测试
  4. com.mysql.jdbc.PacketTooBigException: Packet for query is too large
  5. php考察新人的题目,PHP面试指南2020-sql考察题
  6. win7系统还原在哪​
  7. 在matplotlib中关闭绘图轴的方法
  8. jQuery琐碎笔记
  9. MLE MAP EM
  10. 国内最强Web3D软件WebMax正式版发布
  11. 微信小程序:网课查题微信小程序源码下载,题库资源丰富自动采集,支持语音拍照识别
  12. 笔记本win10系统部分应用显示模糊的问题——已解决!
  13. python实现网页微信登陆_(转帖)网站微信登录-python 实现
  14. MongoDB secondary节点
  15. 手机在线测试黄疸软件,智能手机APP:可在几分钟内检测出新生儿黄疸
  16. 本题要求实现一个函数,输出n行空心的数字金字塔。
  17. urllib中urlparse使用技巧以及iter_content图片边下边存到硬盘使用
  18. java中上转型概念_Java中上转型和重写有什么区别?
  19. gr-osmosdr支持GNURadio的扩展
  20. phpwind携手区域网站深度合作 欲建中小网站电子商务数据平台

热门文章

  1. mcp证书有什么用_初级会计职称有什么用?考下证书可以做什么工作?
  2. Vue双向数据绑定 ~ 非常详细哦
  3. 内置对象 API Math对象、Data对象、Array对象、String对象
  4. php 钉钉 免登,免登的正确使用方式
  5. java中的数组增删查改操作,java数组实现增删改查
  6. 【动态规划刷题笔记】线性dp:合唱队形(最长递增子序列的变体)
  7. html中怎么让字体闪烁,HTML最简单的文字闪烁代码
  8. python模块time_python模块之time和datetime
  9. ztree判断是否是叶子节点
  10. android c博客园,android上进行c/C 开发测试(转) - 奋进 - 博客园