2

我有这个 json 文件,它有一个键值对映射,但每个值都是一个值列表

{
     "car":["BMW", "AUDI"],
      "OS":["Mac", "Win", "Ubuntu"],
      "food":["Burger", "Taco"]
}

我需要在 java 类中读取它们并将其转换为有序哈希。我知道集合和散列是无序的,所以如果有办法获取键的有序列表,那将非常有帮助。此外,如果有一种方法可以重新排序信息并获得一个很好的键列表。

4

1 回答 1

2

我认为您的意思是地图,而不是集合。集合没有键,而 Map 有。

  • HashMap 以哈希表的形式实现,并且没有键或值的排序。
  • TreeMap是基于红黑树结构实现的,按key排序。
  • LinkedHashMap 保留插入顺序
  • Hashtable 是同步的,与 HashMap 不同。

所以在你的情况下,如果你想保留插入顺序,你应该使用LinkedHashMap。如果你想按键排序,你应该使用TreeMap

资源

更新

要阅读它,您可以使用Gson

String json = "{'car':['BMW', 'AUDI'],'OS':['Mac', 'Win', 'Ubuntu'],'food':['Burger', 'Taco']}";

// Convert the JSON String in a LinkedHashMap (to keep the insertion order)
Map<String, List<String>> map = new Gson().fromJson(json, new TypeToken<LinkedHashMap<String, List<String>>>(){}.getType());

// Print it, for proof
map.forEach((k, v) -> System.out.println("k = " + k + " | v = " + v));
于 2018-04-23T21:54:47.493 回答