【发布时间】:2019-05-31 05:19:40
【问题描述】:
我想在排序列表中生成所有国家/地区的列表。我试过这个:
public Map<String, String> getCountryNameCodeList() {
String[] countryCodes = Locale.getISOCountries();
Arrays.sort(countryCodes);
Map<String, String> list = new HashMap<>();
for (String countryCode : countryCodes) {
Locale obj = new Locale("", countryCode);
list.put(obj.getDisplayCountry(), obj.getCountry());
}
return list;
}
但由于某种原因,该列表未排序。正确的加固方法是什么?
【问题讨论】:
-
使用 TreeMap() 代替 HashMap()。
-
HashMap不保留/保证任何订单。使用TreeMap它会自动根据键对条目进行排序 -
你也可以使用LinkedHashMap,因为它持有订单。
-
旁注:不要调用您的方法
getCountryNameCodeList,因为这意味着您返回的是列表,而不是地图。 -
不要调用
Maplist。这只是令人困惑。 (并且不要打电话给Localeobj)。给事物起有意义的名字。
标签: java