ArrayUtils.remove(array,i)的问题 它实际上并没有删除任何索引的对象。还有其他解决这个问题的方法吗?
import java.util.Arrays;
import java.util.Scanner;
import org.apache.commons.lang3.ArrayUtils;
public class Testing {
public static void deleteItem(ItemTracker[] listItems) {
System.out.println("Which item you want to delete? ");
for(int i=0; i < listItems.length; i++) {
if(input.equalsIgnoreCase("Quantity")) {
// Some Code
} else if(input.equalsIgnoreCase("Something"){
ArrayUtils.remove(listItems, i); // This is the part where it should delete .. but it doesnt delete.
}
break;
}
}
}
答案 0 :(得分:2)
此方法返回一个新数组,该数组具有与指定位置上的元素相同的输入数组元素。返回数组的组件类型始终与输入数组的组件类型相同。
你可能想要:
listItems = ArrayUtils.remove(listItems, i);
答案 1 :(得分:0)
您需要在ItemTracker对象上实现equals和hashCode方法。这些是集合中对象匹配所必需的。
答案 2 :(得分:0)
您可以改用我的方法:
private static <T>T[] copyArrayWithOneElementDeleted(final T[] array, final int index) {
final int l = array.length - 1;
if (index == l) return Arrays.copyOf(array, l);
final T[] copy = (T[]) Array.newInstance(array.getClass().getComponentType(), l);
if (index == 0) System.arraycopy(array, 1, copy, 0, l);
else {
System.arraycopy(array, 0, copy, 0, index);
System.arraycopy(array, index + 1, copy, index, l - index);
}
return copy;
}
可以像这样使用:
listItems = copyArrayWithOneElementDeleted(listItems, i);