先看道题吧:

package com.lk.C;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashSet;
import java.util.Set; public class Test3 {
private static final String [] URLNAMES = {
"http://www.sina.com",//202.108.33.94
"http://www.nuw.edu.cn",//124.115.173.252
"http://javapuzzlers.com",//208.97.154.9
"http://www.google.com",//64.233.189.147
"http://Javapuzzlers.com",//208.97.154.9
"http://apache2-snort.skybar.dreamhost.com"//208.97.154.9
};
public static void main(String[] args) throws MalformedURLException {
// TODO Auto-generated method stub
Set<URL> favorites = new HashSet<URL>();
for(String urlName : URLNAMES){
favorites.add(new URL(urlName));
}
System.out.println(favorites.size());
} }

输出什么?

答案:

在联网的状态下会输出4,这是由于URL的equals比对方式。根据equals的文档说明:如果两个主机名可解析为同一IP地址,则认为两个主机相同(即使主机名不等);如果有一个主机名无法解析,但这两个主机名相等(不区分大小写),或者两个主机名都为null,则也认为这两个主机相同。

也就是说,如果两个URL的IP地址是相同的,那么这两个URL就是相等的。

如果在断网时,这些都是无法解析成为IP地址的,这是就要判断URL的名字,仅认为名字相同时才是相同URL(不区分大小写),所以输出是5。

所以:不要把URL应用与Set和Map的key中,可以使用URI来代替,这样就不存在网络问题了。

当集合里存储的是URL时的一些问题总结的更多相关文章

  1. cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中(转)

    基本概念:cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中. 以博客园为例,我们看看cookie有哪些属性: 1.Name:cookie的名称: 2.V ...

  2. 用set、map等存储自定义结构体时容器内部判别各元素是否相同的注意事项

    STL作为通用模板极大地方便了C++使用者的编程,因为它可以存储任意数据类型的元素 如果我们想用set与map来存储自定义结构体时,如下 struct pp { double xx; double y ...

  3. 在Xcode 6 beta里编译Cocos2d-x iOS项目时失败

    转载 在Xcode 6 beta里编译Cocos2d-x iOS项目时可能会失败,提示如下错误: Undefined symbols for architecture i386: "_fwr ...

  4. hdu 1856 求集合里元素的个数 输出最大的个数是多少

    求集合里元素的个数 输出最大的个数是多少 Sample Input41 23 45 61 641 23 45 67 8 Sample Output42 # include <iostream&g ...

  5. 有一个集合,判断集合里有没有“world”这个元素,如果有,添加“javaee”

    // 有一个集合,判断集合里有没有“world”这个元素,如果有,添加“javaee” List list = new ArrayList(); list.add("world") ...

  6. 集合里面的 E是泛型 暂且认为是object

    集合里面的 E是泛型 暂且认为是object

  7. Excel2010表格里设置每页打印时都有表头

    在打印Excel表格时常常会出现如果存在多页打印时,往往从第二页开始就会出现没有表头的情况,导致到后面都不清楚对应的是哪个数据,查看时也很麻烦,下面就将为大家介绍如何在Excel表格里设置每页打印时都 ...

  8. 二开获取yigo设计器里查询集合里中的某个SQL

    package com.bokesoft.lrp_v3.mid.dongming.service; import java.math.BigDecimal; import java.util.Arra ...

  9. 关于使用openfiler作为共享存储来安装rac时的问题

    关于使用openfiler作为共享存储来安装rac时的问题 第一:一定要使用openfiler-2.3-x86-disc1.iso这个版本号的openfiler,不要使用其它版本号的openfiler ...

随机推荐

  1. EL表达式可以直接放在url的“ ”里面

    <div class="hc-prm-search search flr"> <form action="/userCenter/projectInfo ...

  2. bzoj 4448 情报传递

    Written with StackEdit. Description 奈特公司是一个巨大的情报公司,它有着庞大的情报网络.情报网络中共有\(n\)名情报员.每名情报员能有若干名(可能没有)下线,除\ ...

  3. Linux下更改oracle客户端字符集和服务端字符集

    from:http://blog.csdn.net/chid/article/details/6166506 Linux 下更改 oracle 客户端字符集和服务端字符集 1.Linux 下更改 or ...

  4. ACM学习历程—Codeforces Round #354 (Div. 2)

    http://codeforces.com/contest/676 在allzysyz学弟和hqwhqwhq的邀请下,打了我的第三场CF... 毕竟在半夜..所以本来想水到12点就去睡觉的...结果一 ...

  5. 【LeetCode】129. Sum Root to Leaf Numbers

    Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...

  6. linux系统无法挂载U盘

    插上U盘 [ 2407.650440] usb 1-3.3: new high speed USB device number 7 using s5p-ehci [ 2407.887332] usb ...

  7. sed 相关

    sed中,a命令是指在匹配的位置后面插入新的内容. c命令是说将在匹配模式空间的指定行用新文本加以替代.

  8. 20181102_WCF简单双工

    使用管理员权限打开VS2017 2. 创建一个空白解决方案: 3. 创建几个基于.net  framework的类库项目和一个基于.net Framework 的控制台项目, 然后将类库项目的clas ...

  9. JSP搭建

    Tomcat7已经发布多时,Tomcat7增加了对Servlet 3.0,JSP 2.2和JSP-EL 2.2的支持.支持web application内存泄露的检测和防护等很多新功能.本片教程主要介 ...

  10. nodejs中的util.inspect.js

    util.inspect(object,[showHidden],[depth],[colors])是一个将任意对象转换 为字符串的方法,通常用于调试和错误输出.它至少接受一个参数 object,即要 ...