java - 仅打印最后添加的项目

标签 java

List < Response > Data = new ArrayList < Response > ();
Response object = null;

JSONObject documentRoot = new JSONObject(result);
JSONArray documentChild = documentRoot.getJSONArray("Main");
JSONArray allergyArray = null;
JSONArray vitalsArray = null;

for (int i = 0; i < documentChild.length(); i++) {
    child = documentChild.getJSONObject(i);
    if (Condition1) {
        allergyArray = child.getJSONArray("Allergy");
    } else if {
        vitalsArray = child.getJSONArray("Vitals");
    }
}

object = new Response(); // POJO class

if (null != allergyArray) {
    for (int i = 0; i < allergyArray.length(); i++) {
        object.setCap(allergyArray.getJSONObject(i).getString("Cap"));
        object.setRea(allergyArray.getJSONObject(i).getString("Rea"));
    }
}

if (null != vitalsArray) {
    for (int i = 0; i < vitalsArray.length(); i++) {
        object.setName(vitalsArray.getJSONObject(i).getString("Name"));
        object.setMedic(vitalsArray.getJSONObject(i).getString("Medic"));
    }
}

Data.add(object);

当我尝试迭代并打印结果时,仅打印最后添加的项目。

public void onLoadComplete(List < Response > item) {    
    for (int i = 0; i < item.size(); i++) {
        Log.d("Get", item.get(i).getCap()); // I get only the last item which is added.
    }      
}

为什么我传递给 onLoadComplete 函数的 List 对象只包含添加到 POJO 类的最后一项。

最佳答案

在循环中,您在每次迭代中对同一对象设置值(cap、rea、name 和 medic),这意味着迭代完成后只会设置最后一个值。

对于每个值,您需要创建一个新对象。这是一个基本示例,为了安全需要添加一些检查:

if (null != allergyArray && null != vitalsArray)
{
    for (int i = 0; i < allergyArray.length() && i < vitalsArray.length(); ++i)
    {
        object = new Response(); // POJO class
        object.setCap(allergyArray.getJSONObject(i).getString("Cap"));
        object.setRea(allergyArray.getJSONObject(i).getString("Rea"));
        object.setName(vitalsArray.getJSONObject(i).getString("Name"));
        object.setMedic(vitalsArray.getJSONObject(i).getString("Medic"));

        Data.add(object);
    }
}

关于java - 仅打印最后添加的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15995896/

相关文章:

java - 什么是 tomcat 默认 GC 选项?

java - 使用 Java 8 在一行中构建一组 Node.Leaf.Id

java - 验证是否单击了每个按钮

java - Servlet 的 MVC 架构的工作

java - 尝试查找给定路径中是​​否存在文件

java - Recaptcha stoken 生成(从 Java 转换为 Ruby)

java - Karate - GraphQL - 如何验证架构然后响应?

java - 合并多个 if 语句

java - 将 Log4J 查看器(链锯)连接到 MySql 数据库

java - 删除具有特定值的子树