Java 有没有从方法[]中删除对象的方法

Java 有没有从方法[]中删除对象的方法,java,arrays,Java,Arrays,我对java有点陌生,似乎找不到解决问题的好办法。 我加载一个类,并有一组规则,我想比较该类的每个方法 for(Method methods : methods){ if(checkMethod(methods)){ //Method is approved } else{ //Method is not approved } } 我这里的问题是,我想从已经存在的方法数组中删除该方法,或者将已批准的方法添加到

我对java有点陌生,似乎找不到解决问题的好办法。 我加载一个类,并有一组规则,我想比较该类的每个方法

for(Method methods : methods){
     if(checkMethod(methods)){
         //Method is approved
      }
      else{
         //Method is not approved  
      }
}
我这里的问题是,我想从已经存在的方法数组中删除该方法,或者将已批准的方法添加到新数组中并单独保存它们。 方法[]似乎无法删除其数组中的对象?当创建第二个数组,然后使用以下方法时:

if(checkMethod(methods)){
   approvedMethods[i] = methods;
}
感觉好像我做错了什么,第二个数组将不包含任何已批准的方法。 是否可以从原始数组中删除对象,或者是创建第二个对象的正确方法,如果是这种情况,如何将它们正确添加到新数组中?似乎找不到批准的方法。put()/add()

方法checkMethod()没有问题,用多个案例对其进行了测试,并给出了示例输出。

只需执行以下操作:

Method[] collect = Arrays.stream(array)
                         .filter(AccessibleObject::isAccessible)
                         .toArray(Method[]::new);
检查数组
方法
,筛选所需的方法,并将它们返回到新数组中

在Java中,不能使用
remove
a-like方法从数组中移除。对于这种功能,请改用
ArrayList

如果只想使用数组,则必须执行以下操作:

if(checkMethod(methods)){
   approvedMethods[i] = methods;
}
首先,找出可接受方法的数量,以便事先知道需要为阵列分配多少空间:

int count = 0;
for(Method method : methods){
     if(checkMethod(methods)){
        count++;
      }
}
然后为该阵列分配空间:

Method[] approvedMethods = new Method[count];
现在添加符合您的约束条件的方法:

int i = 0;
for(Method method : methods){
     if(checkMethod(methods)){
        approvedMethods[i++] = method
      }
}
这种方法的一个缺点是它会遍历数组两次