我正在使用GSON反序列化JSON,如下所示:
Type mapType = new TypeToken<Map<Integer, MyClass> >() {}.getType(); // define generic type
Map<Integer, MyClass> jsData= gson.fromJson(r, mapType);
MyClass
是:
public class MyClass{
private String status;
private String mObjectType; //Where mObjectType = Type1 = Type2 = Type3 = Type4
//some more value + getters/setters
}
JSON响应是:
{
128: {
status: someValue,
mObjectType: Type1
},
124: {
status: someValue,
mObjectType: Type3
},
123: {
status: someValue,
mObjectType: Type2
}
}
此后我有Map
个JSON数据,我可以遍历Map
。我希望按Map
按值mObjectType
排序,以按特定顺序插入ListAdepter
,每个部分都有ObjectType标题。
如何在mObjectType
上对此地图进行排序?通过迭代器,我可以获得当前键的所有值。或者更好地实现自定义Comparator
?
UPD
我这样做了:
Iterator i = jsData.entrySet().iterator();
while (i.hasNext()){
Map.Entry iLookObj = (Map.Entry)i.next();
MyClass temp = (MyClass)iWatchObj.getValue();
if(temp.getObjectType().equals("ObjectType1")){
ObjectType1.add(temp);
} else if (temp.getObjectType().equals("ObjectType2")){
ObjectType2.add(temp);
}else if (temp.getObjectType().equals("ObjectType3")){
ObjectType3.add(temp);
}
}
不知道它有多么不同。