看一个问题:
下面的这段程序,输出的是_____。
答案:联网的时候结果是4,不联网结果是5.
解释:
根据 equals 的 API DOC 说明
如果两个主机名可解析为同一 IP 地址,则认为两个主机相同;如果有一个主机名无法
解析,但两个主机名相等(不区分大小写),或者两个主机名都为 null,则也认为这
两个主机相同。
第一和第二个的 IP 地址是相同的,都是 208.97.154.9 ,所以在 Set 时都把它们当成同一个了。
如果在没有网络的条件,这些都是无法解析成为 IP 地址的,这时就判断 URL 的名字了,仅认为名字
相同时才是相同的 URL。
所以不要把 URL 应用于 Set 和 Map 的 key 中,可以使用 URI 来代替,这样就不存在
有无网络的问题了。
-------------------------------------------------------------------------------
java 中URL类的hashcode: