java集合类面试题以下程序的输出结果是什么

import java.util.*;


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程序员面试宝典(三) 欧立奇


你可能感兴趣的:(java集合类面试题以下程序的输出结果是什么)