ArrayUtils有错误吗?它确实删除但是

时间:2014-10-15 09:24:14

标签: java arrays

如果您想测试自己: [链接] https://gist.github.com/anonymous/091750563384024e0ffa [链接] https://gist.github.com/anonymous/1f05cdd1d1685d103326

在deleteItem函数中一切正常,它删除了我想要的东西,但当我再次尝试查看数组时,它再次显示原始数组,即使我已经返回一个新数组

public static ItemTracker[] deleteItem(ItemTracker[] listItems) {
    for(int i = 0; i < listItems.length; i++) {
        if (listItems[i] == null) {
            break;
        } else if(input.equalsIgnoreCase("Everything")){
                listItems = ArrayUtils.remove(listItems, i); // ArrayUtils is actually deleting it but... see output in other function
                System.out.println("Content of Array : " + Arrays.toString(listItems)); // It deleted the index that i want and return a new array  
                // return listItems;   I tried to return here as well but same result
            } 
        }   
    }
    return listItems; // which is here
}

原始数组:[naufal,joker,batman,null,null,null,null,null,null,null]

删除项目后输出,我在索引1中删除小丑:

[naufal,蝙蝠侠,NULL,NULL,NULL,NULL,NULL,NULL,NULL]

虽然有效但是......

运行displayArray方法后:

public static void displayArray(ItemTracker[] listItems) 
     System.out.println("Content of Array : "
             + Arrays.toString(listItems));
}

我明白了:

[naufal,小丑,蝙蝠侠,NULL,NULL,NULL,NULL,NULL,NULL,NULL]

相同的数组;

我发布了多个相同的问题,并尝试了来自这里的人的所有解决方案,但它不起作用。这里真正的问题是什么?,好像我什么都没有。 出于这个问题,这仅适用于数组而不是List或ArrayList

1 个答案:

答案 0 :(得分:0)

在您的代码中:

case 3:
   deleteItem(listItems);
   break;

您忘记将返回的数组分配给listitems:

case 3:
   listItems=deleteItem(listItems);
   break;