Java 我想删除数组列表中的空元素,这将减小数组的大小

Java 我想删除数组列表中的空元素,这将减小数组的大小,java,oop,junit5,Java,Oop,Junit5,这是我删除空元素数的方法: @Override public void removeAt(int index) { int count = 0; for(int i = index; i < this.array.length -1; i++){ array[i] = array[i + 1]; if(Arrays.toString(array).contains("null")) { count

这是我删除空元素数的方法:

@Override
public void removeAt(int index) {
    int count = 0;
    for(int i = index; i < this.array.length -1; i++){
        array[i] = array[i + 1];
        if(Arrays.toString(array).contains("null")) {
            count = count + 1;
            System.out.println("the number of null it has is " + count);
        }
        }
    System.out.println(Arrays.toString(array));
      }

您没有收缩内部
数组
变量,因此其大小不会改变。
实际上,您甚至没有从列表中删除元素,只是将所有元素移到null元素的右侧,我认为这不是预期的情况。

我在代码中没有看到任何语句可以从数组中删除
null
元素。一个简单的解决方案是将给定数组转换为
ArrayList
,然后使用
迭代器来迭代
ArrayList
并删除
null
元素。删除
null
元素后,将
ArrayList
转换回数组

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // Original array
        String[] array = { "a", "b", null, "c", null, null, "d" };
        int originalSize = array.length;

        // Delete null elements
        List<String> list = new ArrayList<>(Arrays.asList(array));
        Iterator<String> itr = list.iterator();
        while (itr.hasNext()) {
            if (itr.next() == null) {
                itr.remove();
            }
        }

        // Convert list to array and assign it to original array reference
        array = list.toArray(new String[0]);
        System.out.println(Arrays.toString(array));
        System.out.println("Number of null elements deleted: " + (originalSize - array.length));
    }
}

Tahsin Ahmed-如果其中一个答案解决了您的问题,您可以通过将其标记为已接受来帮助社区。公认的答案有助于未来的访问者自信地使用解决方案。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // Original array
        String[] array = { "a", "b", null, "c", null, null, "d" };
        int originalSize = array.length;

        // Delete null elements
        List<String> list = new ArrayList<>(Arrays.asList(array));
        Iterator<String> itr = list.iterator();
        while (itr.hasNext()) {
            if (itr.next() == null) {
                itr.remove();
            }
        }

        // Convert list to array and assign it to original array reference
        array = list.toArray(new String[0]);
        System.out.println(Arrays.toString(array));
        System.out.println("Number of null elements deleted: " + (originalSize - array.length));
    }
}
[a, b, c, d]
Number of null elements deleted: 3