java.net.URL 对象上调用的 hashCode() 和 equals()。
java.net.URL 类会在内部使用 java.net.URLStreamHandler 的实例来执行 hashCode() 和 equals() 。
这会导致性能问题,因为 java.net.URLStreamHandler 会执行 DNS 查找。
根据网络的可用性和 DNS 服务器的速度,这可能会导致显著延迟。
该问题很可能可以通过改为使用 java.net.URI 加以解决。
示例:
int f(URL url1, URL url2) {
if (url1.equals(url2)) return url1.hashCode();
else return url2.hashCode();
}