替换list里对象的值并补全。。。

lin694218943 2019-06-06 02:30:43
[{RegisterCount=13, DateID=43604}, {RegisterCount=65, DateID=43605}, {RegisterCount=17, DateID=43606}, {RegisterCount=19, DateID=43607}, {RegisterCount=54, DateID=43610}, {RegisterCount=21, DateID=43611}, {RegisterCount=9, DateID=43612}, {RegisterCount=33, DateID=43613}, {RegisterCount=29, DateID=43614}, {RegisterCount=7, DateID=43615}, {RegisterCount=3, DateID=43617}]
首先是要把这个DateID转成时间,已经做到了,但是不知道怎么全部替换进去。。。
[2019-05-19, 2019-05-20, 2019-05-21, 2019-05-22, 2019-05-25, 2019-05-26, 2019-05-27, 2019-05-28, 2019-05-29, 2019-05-30, 2019-06-01]
然后是补全,,也做到了,,不知道怎么弄进去
[2019-05-01, 2019-05-02, 2019-05-03, 2019-05-04, 2019-05-05, 2019-05-06, 2019-05-07, 2019-05-08, 2019-05-09, 2019-05-10, 2019-05-11, 2019-05-12, 2019-05-13, 2019-05-14, 2019-05-15, 2019-05-16, 2019-05-17, 2019-05-18, 2019-05-19, 2019-05-20, 2019-05-21, 2019-05-22, 2019-05-23, 2019-05-24, 2019-05-25, 2019-05-26, 2019-05-27, 2019-05-28, 2019-05-29, 2019-05-30, 2019-05-31, 2019-06-01, 2019-06-02, 2019-06-03, 2019-06-04, 2019-06-05]
最后要求结果是 填补完,没有的RegisterCount填0
[{RegisterCount=0, DateID=2019-05-01}~,~{RegisterCount=13, DateID=2019-05-19}~,~{RegisterCount=0, DateID=2019-06-05},]

大致想法应该没问题吧。。求各位大佬成全。。。或者教教我啥法子。感觉自己已经傻了
...全文
259 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
咸哼酒家 2019-06-06
  • 打赏
  • 举报
回复
String text = "{\"text\":[{\"RegisterCount\":13, \"DateID\":43604}, {\"RegisterCount\":65, \"DateID\":43605}, { \"DateID\":43606}]}";
JSONObject json = JSONObject.parseObject(text);
List list = json.getJSONArray("text");
for(int i=0;i<list.size();i++){
JSONObject jvo = (JSONObject) list.get(i);
String dateID = jvo.getString("DateID");
//处理后dateID
dateID=i+"处理逻辑追中值";
jvo.put("DateID", dateID);

//处理后registerCount
if(!jvo.containsKey("RegisterCount")){
jvo.put("RegisterCount", 0);
}
}
String result = JSONArray.toJSON(list).toString();
System.out.println("字符串输出转换后的值"+result);
狗蛋丶 2019-06-06
  • 打赏
  • 举报
回复
你这问问题的方式,我竟然看懂了

package com.sejta.springboot.solutions;

import lombok.ToString;
import org.omg.CORBA.DATA_CONVERSION;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

public class Resolve {

    @ToString
    class RegisterDates{
        public RegisterDates(int registerCount, int dateID) {
            RegisterCount = registerCount;
            DateID = dateID;
        }

        public RegisterDates(String date) {
            Date = date;
        }

        int RegisterCount;
        int DateID;
        String Date;
    }

    public List<RegisterDates> getConvert() throws ParseException {
        /**
         * 这是你的原始数据,这里随便填两条
         */
        List<RegisterDates> lists=new ArrayList<>();
        lists.add(new RegisterDates(13,43604));
        lists.add(new RegisterDates(65,43605));
        lists.add(new RegisterDates(17,43606));
        lists.add(new RegisterDates(19,43607));
        /**
         * 这是你dateID转String的对照表 ,比如 43604 - > 2019-05-01
         * 随便填几条
         */
        Map<String,Integer> convert=new HashMap();
        convert.put("2019-05-01",43604);
        convert.put("2019-05-02",43605);
        convert.put("2019-05-03",43606);
        convert.put("2019-05-04",43607);

        /**
         * 这是最后要的结果,我怎么才能塞那么多值进去呢
         */
        List<RegisterDates> dateList=new ArrayList<>();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date start=sdf.parse("2019-05-01");
        Calendar calendar=Calendar.getInstance();
        calendar.setTime(start);
        while (calendar.getTime().getTime()<(new Date()).getTime()){
            dateList.add(new RegisterDates(sdf.format(calendar.getTime())));
            calendar.add(Calendar.DATE,1);
        }

         return dateList.stream().map(registerDates -> {
            String tmpDate=registerDates.Date;
            if(convert.containsKey(tmpDate)) {
                int dateId = convert.get(tmpDate);
                lists.stream().forEach(registerDates1 -> {
                    if (dateId == registerDates1.DateID) {
                        registerDates.RegisterCount = registerDates1.RegisterCount;
                        registerDates.DateID = registerDates1.DateID;
                        return;
                    }
                });
            }else{
                registerDates.RegisterCount=0;
            }
            return registerDates;
        }).collect(Collectors.toList());
    }

    public static void main(String[] args) throws ParseException {
        Resolve r=new Resolve();
        System.out.println(r.getConvert());
    }
}

那个LomBok 你要是没有就去掉,@ToString只是我最后测试打数据用的

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧