一共三个类
自己写的
public class ch17Test2 {
public static Countries c = new Countries();
public static void main(String[] args){
long start = System.currentTimeMillis();
Map<String,String> hm = new HashMap<String,String>(c.capitals(c.DATA.length));
Map<String,String> hm2 = new HashMap<String,String>();
Set<String> hs = new HashSet<String>();
for(Map.Entry<String, String> eny: hm.entrySet()){
String key = eny.getKey();
if(key.substring(0,1).equals("A")){
hm2.put(key, eny.getValue());
hs.add(key);
}
}
long end = System.currentTimeMillis();
System.out.println(end - start);
System.out.println(hm2);
System.out.println(hs);
}
}自带的答案
public class Test2 {
public static void main(String[] args) {
long start = System.currentTimeMillis();
Map<String,String> hm = new HashMap<String,String>();
Set<String> hs = hm.keySet();
Pattern p = Pattern.compile("A[a-zA-Z]*");
for(int i = 0; i < Countries.DATA.length; i++) {
if(p.matcher(Countries.DATA[i][0]).matches())
hm.put(Countries.DATA[i][0], Countries.DATA[i][1]);
}
long end = System.currentTimeMillis();
System.out.println(end - start);
System.out.println(hm);
System.out.println(hs);
}
}基中我都为其加入了System.currentTimeMillis();来测试运行的时间.结果相同.
我的程序的结果 end - start: 0
而自带的结果 end - start: 15
我想问下,为什么速度上会相差那么大!是出在正则吗?

解决方案 »

  1.   

    Countries 这个类的代码请查看JAVA编程思想4中文版的467页
      

  2.   

    public static final String[][] DATA = {
    // Africa
    { "ALGERIA", "Algiers" },
    { "ANGOLA", "Luanda" },
    { "BENIN", "Porto-Novo" },
    { "BOTSWANA", "Gaberone" },
    { "BURKINA FASO", "Ouagadougou" },
    { "BURUNDI", "Bujumbura" },
    { "CAMEROON", "Yaounde" },
    { "CAPE VERDE", "Praia" },
    { "CENTRAL AFRICAN REPUBLIC", "Bangui" },
    { "CHAD", "N'djamena" },
    { "COMOROS", "Moroni" },
    { "CONGO", "Brazzaville" },
    { "DJIBOUTI", "Dijibouti" },
    { "EGYPT", "Cairo" },
    { "EQUATORIAL GUINEA", "Malabo" },
    { "ERITREA", "Asmara" },
    { "ETHIOPIA", "Addis Ababa" },
    { "GABON", "Libreville" },
    { "THE GAMBIA", "Banjul" },
    { "GHANA", "Accra" },
    { "GUINEA", "Conakry" },
    { "BISSAU", "Bissau" },
    { "COTE D'IVOIR (IVORY COAST)", "Yamoussoukro" },
    { "KENYA", "Nairobi" },
    { "LESOTHO", "Maseru" },
    { "LIBERIA", "Monrovia" },
    { "LIBYA", "Tripoli" },
    { "MADAGASCAR", "Antananarivo" },
    { "MALAWI", "Lilongwe" },
    { "MALI", "Bamako" },
    { "MAURITANIA", "Nouakchott" },
    { "MAURITIUS", "Port Louis" },
    { "MOROCCO", "Rabat" },
    { "MOZAMBIQUE", "Maputo" },
    { "NAMIBIA", "Windhoek" },
    { "NIGER", "Niamey" },
    { "NIGERIA", "Abuja" },
    { "RWANDA", "Kigali" },
    { "SAO TOME E PRINCIPE", "Sao Tome" },
    { "SENEGAL", "Dakar" },
    { "SEYCHELLES", "Victoria" },
    { "SIERRA LEONE", "Freetown" },
    { "SOMALIA", "Mogadishu" },
    { "SOUTH AFRICA", "Pretoria/Cape Town" },
    { "SUDAN", "Khartoum" },
    { "SWAZILAND", "Mbabane" },
    { "TANZANIA", "Dodoma" },
    { "TOGO", "Lome" },
    { "TUNISIA", "Tunis" },
    { "UGANDA", "Kampala" },
    { "DEMOCRATIC REPUBLIC OF THE CONGO (ZAIRE)", "Kinshasa" },
    { "ZAMBIA", "Lusaka" },
    { "ZIMBABWE", "Harare" },
    // Asia
    { "AFGHANISTAN", "Kabul" },
    { "BAHRAIN", "Manama" },
    { "BANGLADESH", "Dhaka" },
    { "BHUTAN", "Thimphu" },
    { "BRUNEI", "Bandar Seri Begawan" },
    { "CAMBODIA", "Phnom Penh" },
    { "CHINA", "Beijing" },
    { "CYPRUS", "Nicosia" },
    { "INDIA", "New Delhi" },
    { "INDONESIA", "Jakarta" },
    { "IRAN", "Tehran" },
    { "IRAQ", "Baghdad" },
    { "ISRAEL", "Jerusalem" },
    { "JAPAN", "Tokyo" },
    { "JORDAN", "Amman" },
    { "KUWAIT", "Kuwait City" },
    { "LAOS", "Vientiane" },
    { "LEBANON", "Beirut" },
    { "MALAYSIA", "Kuala Lumpur" },
    { "THE MALDIVES", "Male" },
    { "MONGOLIA", "Ulan Bator" },
    { "MYANMAR (BURMA)", "Rangoon" },
    { "NEPAL", "Katmandu" },
    { "NORTH KOREA", "P'yongyang" },
    { "OMAN", "Muscat" },
    { "PAKISTAN", "Islamabad" },
    { "PHILIPPINES", "Manila" },
    { "QATAR", "Doha" },
    { "SAUDI ARABIA", "Riyadh" },
    { "SINGAPORE", "Singapore" },
    { "SOUTH KOREA", "Seoul" },
    { "SRI LANKA", "Colombo" },
    { "SYRIA", "Damascus" },
    { "TAIWAN (REPUBLIC OF CHINA)", "Taipei" },
    { "THAILAND", "Bangkok" },
    { "TURKEY", "Ankara" },
    { "UNITED ARAB EMIRATES", "Abu Dhabi" },
    { "VIETNAM", "Hanoi" },
    { "YEMEN", "Sana'a" },
    // Australia and Oceania
    { "AUSTRALIA", "Canberra" },
    { "FIJI", "Suva" },
    { "KIRIBATI", "Bairiki" },
    { "MARSHALL ISLANDS", "Dalap-Uliga-Darrit" },
    { "MICRONESIA", "Palikir" },
    { "NAURU", "Yaren" },
    { "NEW ZEALAND", "Wellington" },
    { "PALAU", "Koror" },
    { "PAPUA NEW GUINEA", "Port Moresby" },
    { "SOLOMON ISLANDS", "Honaira" },
    { "TONGA", "Nuku'alofa" },
    { "TUVALU", "Fongafale" },
    { "VANUATU", "< Port-Vila" },
    { "WESTERN SAMOA", "Apia" },
    // Eastern Europe and former USSR
    { "ARMENIA", "Yerevan" },
    { "AZERBAIJAN", "Baku" },
    { "BELARUS (BYELORUSSIA)", "Minsk" },
    { "BULGARIA", "Sofia" },
    { "GEORGIA", "Tbilisi" },
    { "KAZAKSTAN", "Almaty" },
    { "KYRGYZSTAN", "Alma-Ata" },
    { "MOLDOVA", "Chisinau" },
    { "RUSSIA", "Moscow" },
    { "TAJIKISTAN", "Dushanbe" },
    { "TURKMENISTAN", "Ashkabad" },
    { "UKRAINE", "Kyiv" },
    { "UZBEKISTAN", "Tashkent" },
    // Europe
    { "ALBANIA", "Tirana" }, { "ANDORRA", "Andorra la Vella" },
    { "AUSTRIA", "Vienna" }, { "BELGIUM", "Brussels" },
    { "BOSNIA", "-" },
    { "HERZEGOVINA", "Sarajevo" },
    { "CROATIA", "Zagreb" },
    { "CZECH REPUBLIC", "Prague" },
    { "DENMARK", "Copenhagen" },
    { "ESTONIA", "Tallinn" },
    { "FINLAND", "Helsinki" },
    { "FRANCE", "Paris" },
    { "GERMANY", "Berlin" },
    { "GREECE", "Athens" },
    { "HUNGARY", "Budapest" },
    { "ICELAND", "Reykjavik" },
    { "IRELAND", "Dublin" },
    { "ITALY", "Rome" },
    { "LATVIA", "Riga" },
    { "LIECHTENSTEIN", "Vaduz" },
    { "LITHUANIA", "Vilnius" },
    { "LUXEMBOURG", "Luxembourg" },
    { "MACEDONIA", "Skopje" },
    { "MALTA", "Valletta" },
    { "MONACO", "Monaco" },
    { "MONTENEGRO", "Podgorica" },
    { "THE NETHERLANDS", "Amsterdam" },
    { "NORWAY", "Oslo" },
    { "POLAND", "Warsaw" },
    { "PORTUGAL", "Lisbon" },
    { "ROMANIA", "Bucharest" },
    { "SAN MARINO", "San Marino" },
    { "SERBIA", "Belgrade" },
    { "SLOVAKIA", "Bratislava" },
    { "SLOVENIA", "Ljuijana" },
    { "SPAIN", "Madrid" },
    { "SWEDEN", "Stockholm" },
    { "SWITZERLAND", "Berne" },
    { "UNITED KINGDOM", "London" },
    { "VATICAN CITY", "---" },
    // North and Central America
    { "ANTIGUA AND BARBUDA", "Saint John's" }, { "BAHAMAS", "Nassau" },
    { "BARBADOS", "Bridgetown" }, { "BELIZE", "Belmopan" },
    { "CANADA", "Ottawa" }, { "COSTA RICA", "San Jose" },
    { "CUBA", "Havana" }, { "DOMINICA", "Roseau" },
    { "DOMINICAN REPUBLIC", "Santo Domingo" },
    { "EL SALVADOR", "San Salvador" },
    { "GRENADA", "Saint George's" },
    { "GUATEMALA", "Guatemala City" },
    { "HAITI", "Port-au-Prince" },
    { "HONDURAS", "Tegucigalpa" },
    { "JAMAICA", "Kingston" },
    { "MEXICO", "Mexico City" },
    { "NICARAGUA", "Managua" },
    { "PANAMA", "Panama City" },
    { "ST. KITTS", "-" },
    { "NEVIS", "Basseterre" },
    { "ST. LUCIA", "Castries" },
    { "ST. VINCENT AND THE GRENADINES", "Kingstown" },
    { "UNITED STATES OF AMERICA", "Washington, D.C." },
    // South America
    { "ARGENTINA", "Buenos Aires" },
    { "BOLIVIA", "Sucre (legal)/La Paz(administrative)" },
    { "BRAZIL", "Brasilia" }, { "CHILE", "Santiago" },
    { "COLOMBIA", "Bogota" }, { "ECUADOR", "Quito" },
    { "GUYANA", "Georgetown" }, { "PARAGUAY", "Asuncion" },
    { "PERU", "Lima" }, { "SURINAME", "Paramaribo" },
    { "TRINIDAD AND TOBAGO", "Port of Spain" },
    { "URUGUAY", "Montevideo" }, { "VENEZUELA", "Caracas" }, };