Processing 处理过程中从数组中删除对象的最佳方法

Processing 处理过程中从数组中删除对象的最佳方法,processing,Processing,我真的希望Processing能够使用push和pop方法来处理数组,但既然没有,我就只能尝试找出在数组中特定位置移除对象的最佳方法。我相信这对很多人来说都是最基本的,但我需要一些帮助,而我还没有通过浏览处理参考来了解更多 我认为这无关紧要,但供您参考,以下是我最初用于添加对象的代码: Flower[] flowers = new Flower[0]; for (int i=0; i < 20; i++) { Flower fl = new Flower(); flowe

我真的希望Processing能够使用push和pop方法来处理数组,但既然没有,我就只能尝试找出在数组中特定位置移除对象的最佳方法。我相信这对很多人来说都是最基本的,但我需要一些帮助,而我还没有通过浏览处理参考来了解更多

我认为这无关紧要,但供您参考,以下是我最初用于添加对象的代码:

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;
}
Flower[]flowers=新花[0];
对于(int i=0;i<20;i++)
{
花fl=新花();
花=(花[])展开(花,花.length+1);
花[flowers.length-1]=fl;
}

对于这个问题,假设我想从位置15移除一个对象。谢谢,伙计们。

我认为你们最好的选择是使用arraycopy。您可以对src和dest使用相同的数组。类似以下内容(未经测试):


您可能还想考虑使用比普通数组更可用的方法。


您可以使用myArrayList删除第十五个元素。删除(14)

我知道这个问题很久以前就被问到了,但是似乎很多人还在寻找答案。我刚刚写了这个。我对它进行了一些测试,它似乎按照我希望的方式运行

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;
var yourArr=[1,2,3,4];
var removeIndex=2;
var newArr=[];
对于(变量i=0;iremoveIndex){
附加(newArr,yourar[i]);
}
}
yourArr=newArr;

。。。我认为这也应该有效。希望这能帮助任何需要它的人。

我做了一个功能,基本上将要删除的索引切换到最后一个,然后将其缩短

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);
希望这有帮助

String[]myArray={“0”、“1”、“2”、“3”、“4”、“5”、“6”};
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;
}
String[]removietem(String[]arr,int n){ 如果(n
我发现这是解决问题的最简单方法。这对对象数组有效吗?我得到“无法对数组类型filename.SomeClass[]调用remove(int)”请注意,处理使用Java语法。此答案使用JavaScript语法,因此它不是一个真正有效的答案。虽然此代码可能会回答此问题,但提供有关此代码回答此问题的原因和/或方式的附加上下文可提高其长期价值。
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;
}