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