gpt4 book ai didi

java - 二进制搜索方法数组Java

转载 作者:行者123 更新时间:2023-11-29 07:59:57 25 4
gpt4 key购买 nike

我正在尝试有效地搜索天气,子类实现了一个名为 _szMethodName 的字符串中的方法。通过执行 Method[] _arrClassMethodsList = class.getMethods();,我可以获得子类实现的所有方法的数组。然后我可以将方法的名称与我正在寻找的函数的 stringName 进行比较,以确定该类是否实现了该特定方法。目前我在 for 循环中工作,但随着子类的增长,它会变慢。

For循环实现:

for (Method method : class.getMethods()){
if(method.getName().equals(_szMethodName)){
//method exists in subclass
break;
}
}

class.getMethods() 中的方法数组按字母顺序排序。(仅在 Java >=7 中)。我希望我可以通过对数组使用二进制搜索或其他一些优化而不是使用 for 循环来利用它。但是,我还没有弄清楚如何在数组上实现Java的二分查找功能。我试过使用 comparator 或 and comparable 但还没有成功。我最近的比较器实现如下,但存在我尚未能够解决的错误。

当前尝试使用比较器:

Comparator<Method> c = new Comparator <Method>() {
public int compare(Method method, String string) {
return method.getName().compareTo(string);
}
};

Method[] _arrClassMethodsList = class.getMethods();
int index = Arrays.binarySearch(_arrClassMethodsList, _szMethodName, c);

如果您能提供有关如何实现此功能的任何帮助或示例,我们将不胜感激。谢谢!

最佳答案

你为什么不使用方法 http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#getMethod%28java.lang.String,%20java.lang.Class...%29直接获取方法(如果可用)并让 JVM 高效地为您完成工作?

顺便说一句,getMethods 的文档说:“返回的数组中的元素未排序并且未按任何特定顺序 em>”。二进制搜索需要排序的数据。这意味着您首先需要对数组进行排序。

注意:你应该看看那个方法 getMatchingAccessibleMethod那可能会做你所期望的。

关于java - 二进制搜索方法数组Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14982907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com