java - 如何检测 URL 对象是否与 Collection 中的另一个 URL 对象指向相同的路径

标签 java url set contains

我需要写这样的东西:

private Set processedLinks = new HashSet();

public boolean isProcessed(String url) throws MalformedURLException {

        return processedLinks.contains(new URL(url));
    }

这不起作用,因为创建的 URL 是集合中 URL 之外的另一个对象。我需要将创建的 URL 的主机和文件与 HashSet 中的 URL 的匹配进行比较。什么是最好的方法?

我想用我的类扩展 URL 并覆盖 equals(),但 URL 是最终的。所以我的第二个想法是制作类似 URLHashSet 的扩展 HashSet 并重写 contains 方法。但我不确定它是否会对性能产生负面影响,因为该 HashSet 将包含数万个元素。

您知道如何解决这个问题吗?谢谢。

最佳答案

我建议使用 URI而不是网址。

应避免使用

URL.equals。来自 docs您将看到它需要名称解析(这是一个阻塞操作)并且“已知与 HTTP 中的虚拟托管不一致”。 URI 更有意义,因为您实际上不是在比较物理位置,而是在比较标识符。

关于java - 如何检测 URL 对象是否与 Collection 中的另一个 URL 对象指向相同的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329769/

相关文章:

objective-c - 两个数组的对称差异

Python加入两个具有相似内容的字典

java - 如何对 HashSet 进行排序?

java - 在 ignite 中启用身份验证

java - 通用 XML 能否像 Groovy 中的简单 XML 一样好地解析?

java - Spring 3 处理程序拦截器适配器。在调用拦截器之前请求以 404 结束

javascript - 有没有什么方法可以获取没有查询字符串的 URL?

java - Kotlin 无法解析的日期 - ParseException 错误

java - 销毁 Nuance session

python - Django:如何读取嵌套的 url 正则表达式