Map&List排序

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值