java 省份小工具
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; /** * GB/T 2260-2007 * @author witas * */ public class ProvinceUtils { private static final String PROV = "110000_京_华北_北京市\r\n" + "120000_津_华北_天津市\r\n" + "130000_冀_华北_河北省\r\n" + "140000_晋_华北_山西省\r\n" + "150000_蒙_华北_内蒙古自治区\r\n" + "210000_辽_东北_辽宁省\r\n" + "220000_吉_东北_吉林省\r\n" + "230000_黑_东北_黑龙江省\r\n" + "310000_沪_华东_上海市\r\n" + "320000_苏_华东_江苏省\r\n" + "330000_浙_华东_浙江省\r\n" + "340000_皖_华东_安徽省\r\n" + "350000_闽_华南_福建省\r\n" + "360000_赣_华中_江西省\r\n" + "370000_鲁_华东_山东省\r\n" + "410000_豫_华中_河南省\r\n" + "420000_鄂_华中_湖北省\r\n" + "430000_湘_华中_湖南省\r\n" + "440000_粤_华南_广东省\r\n" + "450000_桂_华南_广西壮族自治区\r\n" + "460000_琼_华南_海南省\r\n" + "500000_渝_西南_重庆市\r\n" + "510000_川_西南_四川省\r\n" + "520000_贵_西南_贵州省\r\n" + "530000_云_西南_云南省\r\n" + "540000_藏_西南_西藏自治区\r\n" + "610000_陕_西北_陕西省\r\n" + "620000_甘_西北_甘肃省\r\n" + "630000_青_西北_青海省\r\n" + "640000_宁_西北_宁夏回族自治区\r\n" + "650000_新_西北_新疆维吾尔自治区\r\n" + "710000_台_港澳台_台湾省\r\n" + "810000_港_港澳台_香港特别行政区\r\n" + "820000_澳_港澳台_澳门特别行政区"; private static final Map<Integer,Prov> PROV_MAP = new HashMap<>(); private static final List<Prov> PROV_LIST = new ArrayList<>(); static { String[] splits = PROV.split("\r\n"); for (String s : splits) { String[] items = s.split("_"); Prov prov = new Prov(); prov.setCode(Integer.valueOf(items[0])); prov.setShortName(items[1]); prov.setArea(items[2]); prov.setName(items[3]); PROV_LIST.add(prov); PROV_MAP.put(Integer.valueOf(items[0]), prov); } } /** * 获取省名 * @param code * @return */ public static String getProv(Integer code) { Prov prov = PROV_MAP.get(code); if(prov != null) { return prov.getName(); } return code+""; } public static Map<Integer,Prov> getProvMap(){ Map<Integer,Prov> result = new HashMap<>(); for(Prov p : PROV_LIST) { result.put(p.getCode(), JSONObject.parseObject(JSONObject.toJSONString(p), Prov.class)); } return result; } /** * 获取省份列表 * @return */ public static List<Prov> getProvList(){ return JSONArray.parseArray(JSONObject.toJSONString(PROV_LIST), Prov.class); } /** * 获取地域省份 * @param area * @return */ public static List<Prov> getArea(String area){ Area a= Area.forName(area); return getArea(a); } /** * 获取地域省份 * @param area * @return */ public static List<Prov> getArea(Area area){ if(area == null) { return new ArrayList<>(); } List<Prov> list = new ArrayList<>(); for(Prov p : PROV_LIST) { if(p.getArea().equals(area.getName())) { list.add(JSONObject.parseObject(JSONObject.toJSONString(p), Prov.class)); } } return list; } /** * 获取地域 * @param code * @return */ public static Area toArea(Integer code) { Prov prov = PROV_MAP.get(code); return toArea(prov); } /** * 获取地域 * @param prov * @return */ public static Area toArea(Prov prov) { if(prov == null || prov.getArea()== null) { return null; } Area a= Area.forName(prov.getArea()); return a; } public static enum Area { XB("西北"), XN("西南"), HB("华北"), HZ("华中"), HN("华南"), HD("华东"), DB("东北"), ; private String name; private Area(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public static Area forName(String area) { Area a=null; try { a = Area.valueOf(area); } catch (Exception e) { } if(a == null) { if(Area.XB.getName().equals(area)) { a = Area.XB; }else if(Area.XN.getName().equals(area)) { a = Area.XN; }else if(Area.HB.getName().equals(area)) { a = Area.HB; }else if(Area.HZ.getName().equals(area)) { a = Area.HZ; }else if(Area.HN.getName().equals(area)) { a = Area.HN; }else if(Area.HD.getName().equals(area)) { a = Area.HD; }else if(Area.DB.getName().equals(area)) { a = Area.DB; } } return a; } } public static class Prov { private Integer code; private String shortName; private String name; private String area; public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public String getShortName() { return shortName; } public void setShortName(String shortName) { this.shortName = shortName; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getArea() { return area; } public void setArea(String area) { this.area = area; } @Override public String toString() { return code + "_" + shortName + "_" + name + "_" + area; } } }