1 package net.sourceforge.jgeocoder.us; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 import java.util.Arrays; 7 import java.util.Comparator; 8 import java.util.HashMap; 9 import java.util.HashSet; 10 import java.util.List; 11 import java.util.Map; 12 import java.util.Set; 13 14 class SpecialData{ 15 public static final Map<String, List<String>> C_MAP = new HashMap<String, List<String>>(); 16 static{ 17 BufferedReader r = null; 18 try { 19 r = new BufferedReader( new InputStreamReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("exception_city.txt"))); 20 String line = null; 21 Map<String, Set<String>> tmp = new HashMap<String, Set<String>>(); 22 while((line = r.readLine())!=null){ 23 String[] items = line.split("//s*->//s*"); 24 String[] cities = items[1].split("[|]"); 25 String state = items[0]; 26 Set<String> set = tmp.get(state); 27 if(set == null){ 28 set = new HashSet<String>(); 29 tmp.put(state, set); 30 } 31 for(String city : cities){ 32 set.add(city); 33 } 34 } 35 for(Map.Entry<String, Set<String>> e : tmp.entrySet()){ 36 String[] array = e.getValue().toArray(new String[]{}); 37 Arrays.sort(array, new Comparator<String>(){ 38 @Override 39 public int compare(String o1, String o2) { 40 return Integer.valueOf(o2.length()).compareTo(o1.length()); 41 } 42 }); 43 C_MAP.put(e.getKey(), Arrays.asList(array)); 44 } 45 } catch (Exception e) { 46 throw new Error("Unable to initalize exception_city", e); 47 }finally{ 48 if(r != null){ try { 49 r.close(); 50 } catch (IOException e) {} } 51 } 52 } 53 }