Java 使用空/空元素移位数组

Java 使用空/空元素移位数组,java,arrays,sorting,Java,Arrays,Sorting,我在这里读了很多关于数组和问题的书,但找不到任何答案 我有一个数组,它将等于: Toys[][] toys = { {toy, toy, toy, toy}, {toy}, {}, {toy,toy}, {toy} }; 或 我试图将null或空元素之后的元素向左移动,使其等于: Toys[][] toys = { {toy, toy, toy, toy}, {toy}, {toy,toy}, {toy} }; 我尝试过这样的流式传输值: toys = (Toys[][]) Arrays.

我在这里读了很多关于数组和问题的书,但找不到任何答案

我有一个数组,它将等于:

Toys[][] toys = { {toy, toy, toy, toy}, {toy}, {}, {toy,toy}, {toy} };

我试图将null或空元素之后的元素向左移动,使其等于:

 Toys[][] toys = { {toy, toy, toy, toy}, {toy}, {toy,toy}, {toy} };
我尝试过这样的流式传输值:

toys = (Toys[][]) Arrays.stream(toys).filter(i -> !(i == null || i.length == 0)).toArray();

但出于某种原因,它什么也不做

我认为您的代码引发了异常。零参数方法返回
对象[]
,您将其错误地强制转换为
玩具[]
。请尝试:


你有没有想过用一个
ArrayList
来代替一个正式的2D数组?当然我不需要为它创建一个列表,我不知道流是什么,但这仍然是一个简单的改变,它可以是
数组
,一个
int
数组
中的任何
对象。如果为null或空,则移位(使用索引),如果其他为null或空,则移位两次。。。你明白了。当然,我不能为你写,至少你自己试试;)如果在null之后有大量元素,有没有有效的方法来移动它们,而不是创建一个新数组并单独移动它们elements@JackSmith这不可能是“字面上的可执行文件”,因为Java中的所有代码都必须定义为类的一部分,但即使这样,也根本不会编辑数组,不知道出了什么问题,它似乎在1d数组中运行良好,但在2ds@JackSmith这是我在没有电脑的情况下能做的最好的了。@JackSmith这里有一个简单的测试,证明它工作正常:
toys = (Toys[][]) Arrays.stream(toys).filter(i -> !(i == null || i.length == 0)).toArray();
toys = Arrays.stream(toys)
        .filter(i -> !(i == null || i.length == 0))
        .toArray(Toys[][]::new);