我真的希望Processing有推送和 pop 方法来处理数组,但由于它没有,我还是试图找出删除一个方法的最佳方法对象在数组中的特定位置。我确信这对于很多人来说都是基本的,但我可以使用它的一些帮助,而且我无法通过浏览Processing参考来解决这个问题。
我觉得这不重要,但是这里引用的是我最初用来添加对象的代码:
Flower[] flowers = new Flower[0];
for (int i=0; i < 20; i++)
{
Flower fl = new Flower();
flowers = (Flower[]) expand(flowers, flowers.length + 1);
flowers[flowers.length - 1] = fl;
}
为了这个问题,让我们假设我想从第15位移除一个对象。谢谢,伙计们。
答案 0 :(得分:6)
您可能还想考虑使用ArrayList,它有比普通数组更多的方法。
您可以使用myArrayList.remove(14)
答案 1 :(得分:0)
我认为你最好的选择是使用arraycopy。您可以为src和dest使用相同的数组。类似于以下内容(未经测试):
// move the end elements down 1
arraycopy(flowers, 16, flowers, 15, flowers.length-16);
// remove the extra copy of the last element
flowers = shorten(flowers);
答案 2 :(得分:0)
我做了一个功能,基本上将要删除的索引切换到最后一个索引,然后将其缩短。
int[] removeByIndex(int[] array, int index) {
int index2 = array.length-1;
int old = array[index];
array[index] = array[index2];
array[index2] = old;
array = shorten(array);
return array;
}
yourarray = removeByIndex(yourarray , arrayindex);
希望这会有所帮助!
答案 3 :(得分:0)
String[] myArray = { "0", "1", "2", "3", "4", "5", "6"};
String[] RemoveItem(String[] arr, int n) {
if (n < arr.length-1) {
arrayCopy(subset(arr, n+1), 0, arr, n, arr.length-1-n);
}
arr = shorten(arr);
return arr;
}
答案 4 :(得分:-1)
我知道很久以前就问过这个问题但似乎很多人仍然在寻找答案。我刚写了这个。我测试了几种方式,它似乎以我想要的方式运行。
var yourArr = [1, 2, 3, 4]; // use your array here
var removeIndex = 1; // item to get rid of
var explode = function(array, index) { // create the function
var frontSet = subset(array, 0, index - 1); // get the front
var endSet = subset(array, index , array.length - 1); // get the end
yourArr = concat(frontSet, endSet); // join them
};
explode(yourArr, removeIndex); // call it on your array
这是一种方式。我想你也可以遍历数组。有点像...
var yourArr = [1, 2, 3, 4];
var removeIndex = 2;
var newArr = [];
for(var i = 0; i < yourArr.length; i++) {
if(i < removeIndex) {
append(newArr, yourArr[i]);
} else if(i > removeIndex) {
append(newArr, yourArr[i]);
}
}
yourArr = newArr;
......认为这也应该有用。希望这可以帮助任何需要它的人。