【问题标题】:Sort list of countries [duplicate]国家/地区排序列表[重复]
【发布时间】: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,因为这意味着您返回的是列表,而不是地图。
  • 不要调用 Map list。这只是令人困惑。 (并且不要打电话给Localeobj)。给事物起有意义的名字。

标签: java


【解决方案1】:

HashMap 未排序,使用LinkedHashMap

这个实现与 HashMap 的不同之处在于它维护了一个 双向链表贯穿其所有条目。这个链接 list 定义迭代顺序,通常是 哪些键被插入到地图中(insertion-order)。

只是改变

Map<String, String> list = new HashMap<>();

到:

Map<String, String> list = new LinkedHashMap<>();

【讨论】:

  • 在返回之前他是否需要对其调用 sort() 或其他东西?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多