java - 删除数组中的 0 值并调整大小

标签 java

所以我有

int[] a = {0, 0, 0, 0, 4, 2, 3, 9};
int[] b = {0, 0, 0, 0, 0, 0, 1, 3};

如何才能删除所有值为 0 的元素,并且每个数组都不会分配任何额外的不必要的空间。

int[] a = {4, 2, 3, 9};
int[] b = {1, 3};

最佳答案

Java 8 解决方案:

a = Arrays.stream(a).filter(v -> v != 0).toArray();

不需要 Java 8 的解决方案:

int count = 0;
for (int i = 0; i < a.length; i++)
    if (a[i] != 0)
        a[count++] = a[i];
a = Arrays.copyOf(a, count);

但是,我认为最好的解决方案是使用 ArrayList<Integer>对于这种事情。

关于java - 删除数组中的 0 值并调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32938831/

相关文章:

java - Spring 至少必须指定一个基础包异常(exception)

java - 如何在 Java EE 6 中通过 EL 检索上下文参数?

java - 在单元/集成测试阶段将属性值注入(inject)/覆盖到 Spring Boot 属性文件

java - 如何使用 Spring+Hibernate 将实体持久化到两个不同的表

java - Web 服务生成和 JavaBeans 有何关系?

JSF 1.2 应用程序无法与 GlassFish v3 配合使用

java - 通过 mp3agic 访问歌词

java - 玩!框架与 Ruby on Rails

java - 如何从 servlet 打开全新的浏览器

java - 在finally block 中断zip中的ByteStream复制后关闭GZIPOutputStream