import java.util.*;
import java.net.MalformedURLException;
import java.net.URL;
public class Test {
private static final String[] URLNAMES = {
"http://javapuzzlers.com", //IP地址为208.97.154.9
"http://www.google.com", //IP地址为64.233.189.147
"http://Javapuzzlers.com", //IP地址为208.97.154.9
"http://apache2-snort.skybar.dreamhost.com", //IP地址为208.97.154.9
};
public static void main(String[] args) throws MalformedURLException{
Set<URL> favorites = new HashSet<URL>();
for(String urlName : URLNAMES)
favorites.add(new URL(urlName));
System.out.println(favorites.size());
}
import java.net.MalformedURLException;
import java.net.URL;
public class Test {
private static final String[] URLNAMES = {
"http://www.sina.com", //IP地址为202.108.33.94
"http://www.nwu.edu.cn", //IP地址为124.115.173.252"http://javapuzzlers.com", //IP地址为208.97.154.9
"http://www.google.com", //IP地址为64.233.189.147
"http://Javapuzzlers.com", //IP地址为208.97.154.9
"http://apache2-snort.skybar.dreamhost.com", //IP地址为208.97.154.9
};
public static void main(String[] args) throws MalformedURLException{
Set<URL> favorites = new HashSet<URL>();
for(String urlName : URLNAMES)
favorites.add(new URL(urlName));
System.out.println(favorites.size());
}
}
A 一定是4 B .一定是5 C.一定是6 D以上答案皆不正确
答案:D
解析:联网状态下会输出4,URL的equal对比方式。根据文档说明:如果两个主机名可解析为同一IP地址,则认为两个主机相同(即使主机名不等)。
"http://javapuzzlers.com", //IP地址为208.97.154.9
"http://Javapuzzlers.com", //IP地址为208.97.154.9
"http://apache2-snort.skybar.dreamhost.com", //IP地址为208.97.154.9
上面3个IP地址是相同的,都是208.97.154.9 ,所以在Set时都把它们当成同一个。 答案为4.
断网时候,这些都成为无法解析成为IP地址,这时就要判断URL的名字。仅认为名字相同时才是相同的URL。"http://javapuzzlers.com", 和
"http://Javapuzzlers.com", 因为不区分大小写,所以默认两者相同。答案为5。
出自JAVA程序员面试宝典(三) 欧立奇