Map&List排序

来源:互联网 发布:复活岛巨人像 知乎 编辑:程序博客网 时间:2024/06/06 08:32

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方法进行比较排序。

0 0
原创粉丝点击