Java 如何对对象数组使用ArrayUtils,它不需要';t删除数组的内容
如何删除对象数组的内容。如果有其他方法删除对象数组的内容,请不要共享Java 如何对对象数组使用ArrayUtils,它不需要';t删除数组的内容,java,arrays,Java,Arrays,如何删除对象数组的内容。如果有其他方法删除对象数组的内容,请不要共享 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
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;
}
}
}
导入java.util.array;
导入java.util.Scanner;
导入org.apache.commons.lang3.ArrayUtils;
公共类测试{
公共静态void deleteItem(ItemTracker[]listItems){
System.out.println(“要删除哪个项目?”);
for(int i=0;i
此方法返回具有相同输入元素的新数组
数组,但指定位置上的元素除外。组件类型
返回数组的值始终与输入数组的值相同
所以,你应该这样使用它
listItems = ArrayUtils.remove(listItems, i);
注意
- 这里,我们将返回的数组分配给当前的
listItem
- 由于此方法不更改实际数组,但在删除后返回更改的数组,与
方法适用于#replace
字符串
列表项
,您需要返回包含更改的新数组
改变这个
ArrayUtils.remove(listItems, i);
到
如中所示,该方法不会更改参数listItems
,而是返回包含其余元素的新数组
编辑
您还需要将删除方法更改为
public static ItemTracker[] deleteItem(ItemTracker[] listItems) {
//..
}
因此,您可以返回新数组和剩余元素。存储生成的数组
它不会更改原始数组对象
编辑:但要使用此方法,您需要更改方法的返回类型
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;
}
publicstaticitemtracker[]deleteItem(ItemTracker[]listItems){
System.out.println(“要删除哪个项目?”);
for(int i=0;i
在您的情况下,数组的用法是不正确和冗余的。您可以用下一种方法删除元素:
// ...
listItems[i] = null;
// array will looks like [o1, o2, null, o3, o4, ...]
// ...
没有其他方法可以不更改方法的返回类型,而无需附加库和临时列表:
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()]);
元素数组从[]移除;
元素toRemove;//应该已经知道
ArrayList tmpList=新的ArrayList(Arrays.asList(arrayToRemoveFrom));
t拆卸(t拆卸);
//任何其他代码处理和删除元素
arrayToRemoveFrom=tmpList.toArray(新数组[tmlList.size()]);
类数组
{
公共静态void main(字符串[]args)
{
双[]数={6.0,4.4,1.9,2.9,3.4,3.5};
java.util.array.sort(数字);
系统输出打印(“升序=”);
for(int i=0;i=0;i--)
系统输出打印(数字[i]+“”);
}
}
此解决方案仅以相反的顺序显示,但可以更改为使用相同的循环对数组重新排序。不确定为什么对3个正确答案进行了否决票…@CoverosGene老实说,否决票是正确的,因为每个anwser(Ilyas答案除外)都忘记提及调用ArrayUtils.remove()
“单独”这对他没有帮助。他还需要更改返回新数组的方法。这不会删除条目。如果“有人”在不检查空元素的情况下迭代该数组。@Tom在他的情况下没有其他方法。正确的解决方案是返回新数组,而不是从现有数组中删除元素。这确实是一个很好的观点。我已经更新了我的答案。您的版本应该适用于。这个答案是正确的。记住,Java中的数组已经修复了大小,我们不能只删除它的一个元素,我们需要返回初始大小-1
的新数组。这是不可能的,因为此方法不返回值。此赋值是完全无用的-它将本地方法列表项
变量的引用更改为新数组,同时方法使用者仍将有对未修改数组的引用,不是吗?@zvdh我想你对引用感到困惑。在你的编译器中试试这段代码。String x=“abc”;x=x+“def”
;你同意这个例子吗。你意识到这个赋值对初始数组无效吗?@DeepakTiwari,你想解释什么?你的方法的问题是,实际上它根本不会改变初始数组,你不需要修改它,你把对这个数组的引用重新赋值给另一个新数组。@NaufalYahaya,可能是还有一个错误,我不知道。我们给了你解决确切问题的建议。现在轮到你了,试着调试方法。这一堆代码不是自给自足的,我确信当前的问题与原始问题无关。祝你好运!这个任务会做什么?@zvdh这是使用ArrayUtils ,但你是对的,如果OP不改变他的deleteItem
方法,这对他没有多大帮助。@Tom
// ...
listItems[i] = null;
// array will looks like [o1, o2, null, o3, o4, ...]
// ...
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()]);
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] + " ");
}
}