1、需求说明
有时候,后台返回的数据是无序的,但是显示的时候需要按照一定的顺序显示。
2、无序list
2.1、数据格式
{
"obj": {
"itemId": 1,
"jobId": 3,
"list": [
{
"answerTag": "D",
"answerRate": 0.29
},
{
"answerTag": "A",
"answerRate": 0.29
},
{
"answerTag": "B",
"answerRate": 0.14
},
{
"answerTag": "C",
"answerRate": 0.29
}
],
"rightRate": 0,
"typeId": 3,
"wrongRate": 0
},
"code": 1,
"msg": "查询用户练习单选题答案比例成功"
}
2.2、数据对应的Bean
2.3、数据排序代码
List<PractiseAnswerRateBean.ListBean> list = mData.getList();
Collections.sort(list, new Comparator<PractiseAnswerRateBean.ListBean>() {
@Override
public int compare(PractiseAnswerRateBean.ListBean o1, PractiseAnswerRateBean.ListBean o2) {
return o1.getAnswerTag().compareTo(o2.getAnswerTag());
}
});
3、无序map
3.1、数据格式
题目的选项和选项标识,现在需求是所有选项都按照“A、B、C、D”显示。(选项和选项标识必须一一对应,因为选项标识有可能是“1、2、3、4”来表示)
3.2、数据对应的Bean
AnswerList 属性存储的是item_content,题目的所有选项;
AnswerTagList属性存储的是item_number,题目的所有选项对应的选项标识。
3.3、数据排序代码
QuestionBean mData;
...
String answerTags = mData.getAnswerTagList();
String answerContents = mData.getAnswerList();
if (TextUtils.isEmpty(answerTags) || TextUtils.isEmpty(answerContents)) return;
String[] mAnswerTags = answerTags.split(",");
String[] mAnswerContents = answerContents.split(",");
Map<String, String> map = new HashMap<>();
for (int i = 0; i < mAnswerTags.length; i++) {
map.put(mAnswerTags[i], mAnswerContents[i]);
}
list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
//升序排序
public int compare(Map.Entry<String, String> o1,Map.Entry<String, String> o2) {
return o1.getKey().compareTo(o2.getKey());
}
});
3、总结
主要用到的是集合的sort方法,里面使用compare方法进行比较排序。