尝试将Element插入到ArrayList中,而不是使用当前值插入其更新

时间:2017-11-29 10:09:54

标签: java arraylist

我有一段代码,我获取json数据并将其传递给另一个方法。数据将每天不断变化。在这里,我想保留我的旧数据,但不知怎的,我无法做到。

保存值的代码:

json = getAllHistory(settings.getRapidView(),sprint.getId(), 
        settings.getCredentials(),settings.getBaseUrl());

List<History> historyList = new ArrayList<>();

Double completedIssues = ClientUtil.getJsonValue(json,sprint.getId(),"completedIssues");

Double allIssues = ClientUtil.getJsonValue(json,sprint.getId(),"allIssues");

Double remainingIssues = completedIssues-allIssues;

if (remainingIssues > 0) {

    History history = new History();

    history.setMiliseconds(ZonedDateTime.now().toInstant().toEpochMilli());
    history.setCompletedIssues(completedIssues);
    history.setAllIssues(allIssues);
    history.setRemainingIssues(remainingIssues);
    historyList.add(history);

    sprintdata.gethistory().addAll(historyList);

    sprintdata.setHistory(historyList);
}

进行休息呼叫的代码:

public static String getAllHistory(String rapidView, Long sprintId, String base64Credentials,String baseUrl) {
    try
    {
        String query = String.format(GET_URL_DATA, rapidView, sprintId);
        query=baseUrl+query;

        HttpEntity<String> entity = new HttpEntity<String>(getHeader(base64Credentials));

        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> result = restTemplate.exchange(query, HttpMethod.GET, entity, String.class);

        String outputJson= result.getBody();
        return outputJson;
    }
    catch (Exception e) 
    {
        // TODO: handle exception
        return null;
    }
}

获取特定Json值的代码:

public static Double getJsonValue(String json, Long sprintId, String field) {

    try{
        return new GsonBuilder().
                create().
                fromJson(json, JsonObject.class).
                getAsJsonObject("contents").
                getAsJsonObject(field).
                get("value").
                getAsDouble();
    }
    catch(Exception ex)
    {
        return null;
    }
}

我无法自己找到错误,所以请帮助我。

我为自己的错误道歉。

1 个答案:

答案 0 :(得分:1)

创建一个元素的列表。

然后到sprintdata的旧历史列表:添加新列表的所有项目(1):

sprintdata.gethistory().addAll(historyList);

然后将旧的sprintdata历史列表替换为1个元素中的新元素:

sprintdata.setHistory(historyList);

所以唯一要做的就是:在旧的历史记录列表中添加一个元素。

sprintdata.gethistory().add(history);