在Processing中从数组中删除对象的最佳方法

时间:2010-03-17 03:43:54

标签: processing

我真的希望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位移除一个对象。谢谢,伙计们。

5 个答案:

答案 0 :(得分:6)

您可能还想考虑使用ArrayList,它有比普通数组更多的方法。

您可以使用myArrayList.remove(14)

删除第15个元素

答案 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;

......认为这也应该有用。希望这可以帮助任何需要它的人。