如何删除对象数组的内容。如果还有其他方法可以删除对象数组的内容,请分享。
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 :(得分:4)
更改此
ArrayUtils.remove(listItems, i);
到
listItems = ArrayUtils.remove(listItems, i);
正如您在JavaDoc中看到的,该方法不会更改参数listItems
,而是返回包含其余元素的新数组。
修改强>
您还需要将删除方法更改为
public static ItemTracker[] deleteItem(ItemTracker[] listItems) {
//..
}
所以你可以用剩下的元素返回新数组。
答案 1 :(得分:2)
存储生成的数组。
它不会更改原始数组对象。
listItems = ArrayUtils.remove(listItems, i);
编辑但是要使用此方法,您需要更改方法的返回类型
public static ItemTracker[] 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"){
listItems = ArrayUtils.remove(listItems, i); // This is the part where it should delete .. but it doesnt delete.
}
break;
}
return listItems;
}
答案 2 :(得分:2)
在您的情况下,ArrayUtils
的使用不正确且多余。您可以通过下一个方式删除元素:
// ...
listItems[i] = null;
// array will looks like [o1, o2, null, o3, o4, ...]
// ...
如果不改变方法的返回类型
,没有其他办法答案 3 :(得分:1)
<强>
ArrayUtils.remove
强>此方法返回一个 new array ,其中包含相同的输入元素 数组除了指定位置上的元素。组件类型 返回数组的值始终与输入数组的相同。
所以,你应该像这样使用它
listItems = ArrayUtils.remove(listItems, i);
<强> 注 强>
listItem
。#replace
方法适用于String
。<强> 是的即可。我同意
zvdh
我错过了你的方法的目的 因为我更专注于去除元素。为此! 因为这实际上不会更改listItem
,您需要return
包含更改的新数组。
答案 4 :(得分:1)
没有额外的库,临时列表:
Element arrayToRemoveFrom[];
Element toRemove; // should be known already
ArrayList<Element> tmpList = new ArrayList<Element>(Arrays.asList(arrayToRemoveFrom));
tmpList.remove(toRemove);
// any other code processing and removing elements
arrayToRemoveFrom = tmpList.toArray(new Arrays[tmlList.size()]);
答案 5 :(得分:0)
class Arrays
{
public static void main(String[] args)
{
double[] numbers = {6.0, 4.4, 1.9, 2.9, 3.4, 3.5};
java.util.Arrays.sort(numbers);
System.out.print("Ascending order= ");
for (int i = 0; i < numbers.length; i++)
System.out.print(numbers[i] + " ");
System.out.println();
System.out.print("Decending order= ");
for (int i = numbers.length -1; i >= 0; i--)
System.out.print(numbers[i] + " ");
}
}
此解决方案仅以相反的顺序显示,但可以更改为使用相同的循环对数组重新排序。